Open Source Erp

1 State of the art

1.1 Enterprise Resource Planning overview

1.2 Phases of the ERP Life-Cycle

1.2.1 Adoption decision phase

1.2.2 Acquisition phase

1.2.3 Implementation phase

1.2.4 Use and maintenance phase

1.2.5 Evolution phase

1.2.6 Retirement phase

1.3 Open Source ERP

2 Theoretical fundamentals

2.1 Maintenance overview

2.2 Software types

2.2.1 Application Software

2.2.2 Package Software

2.2.3 Custom Software

2.2.4 Web Application

2.2.5 Open Source Software

2.2.6 Proprietary Software

2.2.7 Shareware Software

2.2.8 Freeware Software

3 Implementation

3.1 Installation of OpenERP

3.1.1 Download OpenERP

3.1.2 Select Components to install

3.1.3 Configure connection to database

3.1.4 Finish the installation

3.2 Connecting to OpenERP

3.3 Configure OpenERP

3.4 Modules installation

3.5 Using OpenERP

3.5.1 Create Vehicles

3.5.2 Create Customers

3.5.3 Create vehicle contracts

3.5.4 Create Invoices

3.5.5 Reporting Configuration

3.5.6 Importing and Exporting Data

3.5.7 Dashboards

3.6 Using PostgreSQL

4 Experimental results

4.1 Correct invoice date

4.1.1 Refund invoice

4.1.2 Correction using back end update

4.2 Edit/delete a field from a view

4.3 Edit a report

5 Conclusions

1 State of the Art

1.1 Enterprise Resource Planning Overview

Tipically, Enterprise Resource Planning (ERP) are software packages composed of several modules, such as human resources, sales, finance and production, providing cross-organization integration of data through imbedded business processes. These software packages can be customized to answer the specific needs of each organization.

The market for people who can work with Enterprise Resource Planning applications, implement them, and understand how these systems transform organizations, is very big, and in a continuous growing phase during past years.

ERP implementations usually involve broad organizational transformation processes, with significant implications on the organization’s management model, structure, management style and culture, and particularly, on people. ERP systems are not projects that someday will end, but rather, they are a way of life. They require a high degree of alignment between business strategies, information technology strategies and organizational processes.

Change seems to be the main phenomenon associated with an ERP system and in order to deal with change effectively, one has to establish the change vision in the given technical, social, and organizational context. In order to correspond the new requirements usually the aquisition of an ERP system is paired up with a contract for maintenance.

1.2 Phases of the ERP Life-Cycle

The phases of the ERP life-cycle consist in the several stages that an ERP system goes through during its whole life within the hosting organization. They are the following: adoption decision phase, acquisition phase, implementation phase, use and maintenance phase, evolution phase and retirement phase.

Adoption decision phase

This phase is the one during which managers must question the need for a new ERP system while selecting the general information system approach that will best address the critical business challenges and improve the organizational strategy. This decision phase includes the definition of system requirements, its goals and benefits, and an analysis of the impact of adoption at a business and organizational level.

Acquisition phase

This phase consists of the product selection that best fits the requirements of the organization. This, minimizing the need for customization. A consulting company is also selected to help in the next phases of the ERP life-cycle especially in the implementation phase. Factors such as price, training and maintenance services are analyzed and, the contractual agreement is defined. In this phase, it is also important to make an analysis of the return on investment of the selected product.

Implementation phase

This phase consists of the customization or parameterization and adaptation of the ERP package acquired according to the needs of the organization. Usually this task is made with the help of consultants who provide implementation methodologies, know-how and training.

Use and maintenance phase

This phase consists of the use of the product in a way that returns expected benefits and minimizes disruption. During this phase, one must be aware of the aspects related to functionality, usability and adequacy to the organizational and business processes. Once a system is implemented, it must be maintained, because malfunctions have to be corrected, special optimization requests have to be met, and general systems improvements have to be made.

Maintenance represeents the process of modifying a software system or component after delivery to correct faults, improve performance or other attributes, or to adapt to a changed environment. Using other words the maintenance is an after-the-fact activity, no maintenance activities occur during the software development effort, maintenance occurs only after the product is in operation (during the postdelivery stage). Once the software is operational, maintenance and support are provided.

Most significat advantages for applying software maintenance are :

Correct errors;

Correct design flaws;

Interface with other systems;

Make enhancements;

Make necessary changes to the system;

Add necessary changes to the system;

Update files or databases;

Convert programs so that different hardware, software, system features, and telecomuncations facilities can be used;

Prevent problems or improve performance;

Evolution phase

This phase corresponds to the integration of more capabilities into the ERP system, providing new benefits, such as advanced planning and scheduling, supply-chain management, customer relationship management, workflow, and expanding the frontiers to external collaboration with other partners.

Retirement phase

This phase corresponds to the stage when with the appearance of new technologies or the inadequacy of the ERP system or approach to the business needs, managers decide if they will substitute the ERP software with other information system approach more adequate to the organizational needs of the moment.

1.3 Open-source ERP

Smaller organizations may prefer free and open source solutions but are faced with an enormous array of options from different vendors. One of the most difficult decisions to make is whether to develop software from scratch or to adopt a free and open source ERP framework.

Open-source solutions can be divided into two types; community open-source software and commercial open-source software. These two types differ in the matter of who decides on the future direction of the software. In the community open-source software a community of volunteers together decided where the software is heading and what developments should be accepted to the software. Despite the fact that this type of open-source software can be used for free it has costs related to the usage in relation to learning, implementation and support. In the commercial open-source software approach the software is owned and developed with a for- rofit approach by a vendor. In this case the business case for the vendor is cost saving from cheap development and earning from maintenance and support of the end users.

Examples of open-source ERP`s :

OpenERP

Adempire

Apache Ofbiz

AvERP

OpenERP

SAP

SQL-Ledger

Tryton

WebERP

Compiere

OpenERP is an open source enterprise resurouce planning software suite actively programmed, supported and organized by Open ERP s.a.. Lately it has subsequently rebranded as Odoo, and now claims to not conform to standard expectations of ERP systems. In production and development, open source as a development model promotes universal access via free license to a product design or blueprint and universal redistribution of that design or blueprint, including subsequent improvements to it by anyone.

The OpenERP Web Client is known to work best with the latest version of Google Chrome or Mozilla Firefox. However the following browsers are also supported: Safari 4.0 or later, Opera10.0 or later and Internet Explorer 8.0 or later (later is strongly recommended).

OpenERP is licensed under the terms of the Affero General Public License. The Affero General Public License is often abbreviated as Affero GPL or AGPL.

OpenERP has been founded in 2005 and it thrives in a unique and fully open ecosystem combining the resources of its open source community, partners network and vendor. OpenERP provides 30 main applications supported by the editor. In additiona, the community, comprised of more than 1500 active members has contributed more than 4000 apps to cover a wide variety of business needs.

Since the foundation till now OpenERP software won mutiple awards, as follows :

2011 – INSEAD Innovator Award

2012 – Highest-ranked Belgian company in the Deloitte Technology Fast50 Benelux  (growth of turnover of 1549% in the past 5 years)

2012 & 2013 – Bossie Award for the Best Open Source Solution 

2013 – Linux New Media Award for The Best Open Source solution compatible with European Accounting Systems

2013 – “L’Entreprise Prometteuse” by Ernst & Young

OpenERP includes many modules and features, which can be configured by each customer as per its business needs.

Beside many others, most common modules and features are:

Sales Management – allows you to manage your sales goals in an effective and efficient manner by keeping track of all sales orders and history;

Purchase Management – enables you to track your suppliers' price quotations and convert them into purchase orders if necessary. OpenERP has several methods of monitoring invoices and tracking the receipt of ordered goods. You can handle partial deliveries in OpenERP, so you can keep track of items that are still to be delivered in your orders, and you can issue reminders automatically;

Project Management – allows an operational project management system to organize your activities into tasks and plan the work you need to get the tasks completed;

Warehouse Management – you to manage customers, suppliers as well as manufacturing inventories

Accounting and Finance – gives the Administrator user access to all accounting features such as journal items and the chart of accounts

Fleet Management – helps you managing all your vehicles, the contracts associated to those vehicle as well as services, fuel log entries, costs and many other features necessary to the management of your fleet of vehicle(s);

Expanse Management – allows you to manage your employees' daily expenses. It gives you access to your employees’ fee notes and give you the right to complete and validate or refuse the notes. After validation it creates an invoice for the employee. Employee can encode their own expenses and the validation flow puts it automatically in the accounting after validation by managers;

Issue Tracker – allows you to manage the issues you might face in a project like bugs in a system, client complaints or material breakdowns. It allows the manager to quickly check the issues, assign them and decide on their status quickly as they evolve;

Expense Management – allows you to manage your employees' daily expenses. It gives you access to your employees’ fee notes and give you the right to complete and validate or refuse the notes. After validation it creates an invoice for the employee. Employee can encode their own expenses and the validation flow puts it automatically in the accounting after validation by managers;

Social Network – provides a unified social network abstraction layer allowing applications to display a complete communication history on documents with a fully-integrated email and message management system. It enables the users to read and send messages as well as emails. It also provides a feeds page combined to a subscription mechanism that allows to follow documentlidate or refuse the notes. After validation it creates an invoice for the employee. Employee can encode their own expenses and the validation flow puts it automatically in the accounting after validation by managers;

Issue Tracker – allows you to manage the issues you might face in a project like bugs in a system, client complaints or material breakdowns. It allows the manager to quickly check the issues, assign them and decide on their status quickly as they evolve;

Expense Management – allows you to manage your employees' daily expenses. It gives you access to your employees’ fee notes and give you the right to complete and validate or refuse the notes. After validation it creates an invoice for the employee. Employee can encode their own expenses and the validation flow puts it automatically in the accounting after validation by managers;

Social Network – provides a unified social network abstraction layer allowing applications to display a complete communication history on documents with a fully-integrated email and message management system. It enables the users to read and send messages as well as emails. It also provides a feeds page combined to a subscription mechanism that allows to follow documents and to be constantly updated about recent news.

2 Theoretical fundamentals

2.1 Maintenance overview

Software maintenance represent the process of enhancing and optimizing released software. Software maintenance is one of the phases in the software development process, and follows deployment of the software into the field.

Using other words the maintenance is an after-the-fact activity, no maintenance activities occur during the software development effort, maintenance occurs only after the product is in operation ( during the postdelivery stage ). Once the software is operational, maintenance and support are provided.

Figure 1. : Software Evolutionary model

Operations and Maintenance can be employed in parallel with development efforts, and this too adds another dimension to the maintenance efforts.

Each of the models has a phase for Operations and Maintenance and all phases prior to the Operations and Maintenance are referred to as predelivery, while what occurs in Operations and Maintenance is referred to as postdelivery.

During the postdelivery period before users get to use the new system those need to be trained. During the course of operations, users might find things that are not correct in the system, as well as things they would like to see added to the new system. They will provide feedback to operational managers, who have the task to inform the maintainer. After the information is passed to maintainer, he will make the approved corrections or improvements, installs the changes and then the users once again begin to learn the new system, thus perpetuating the loop of maintenance and extending the life of the product. Often, the maintenance phase ends up being the longest process of the entire life cycle, which also outweighs by far the development phase in terms of time and cost.

The reason for which the Operations and Maintenance phase can be the longest of the lifecycle is also explained by Lehman`s first two laws, writen in 1980. Lehman`s first law, named the Law of Continuing Change, states that a system needs to change in order to be usefull. The second law is the Law of Increasing Complexity, which states that the structure of a program deteriorates as it evolves, and over time, the structure of the code degrades until it becomes more cost-effective to rewrite the program.

One of the first to examine what really happens during maintenance was E. Burton Swanson, an American computer scientist, and Professor Emeritus of Information Systems at the UCLA Anderson School of Management. In the late 1970`s, together with Lients, Swanson categorized maintenance activities into four clasees:

Corrective: changes that are necessary in order to fix some actual errors, bugs, possibly ones found by users;

Addaptive: any effort that is initiated as a result of changes in the environment in which a software system must operate;

Perfective: all changes, insertions, deletions, modificactions, extensions, and enhancements made to a system to meet the evolving and/or expanding needs of the users that user the respective software;

Preventive: increasing software maintainability or reliability to prevent problems before they occur;

Regarding corrective changes, it is very important to locate the original specifications in order to determine what the system was originally designed to do.

Adaptive changes are those that must be added to the software in order to keep pace with the changing environment. For example: the operating system might be upgraded and some modifications might be needed in order to make sure the software will ran correctly on the new operating system.

Perfective changes (enhancements), are all the changes added to a system to accommodate the nedds of the users. Simply put, any custom request which user requires to be added to the system, it is classified as a perfective change. If the system performs in accordance with the specifications regarding performance and the user wants perfoamce improved, that is a perfective change.

Preventive maintenance is very important for safety-critical systems, such as the space shuttle or aircraft systems. Some maintainers chose to classify preventive maintenance under the corrective category.

An American specialist in software engineering methodologies, often associated with the function point model of cost estimation, Capers Jones, after studying development and maintenance for years, in 1991 stated that the work of enhancing an existing system is much more costly than new development work if the base system is not well structured. Jones also states that “organizations lump enhancements and the fixing of bugs together” which from his perspective distorts both activities, and leads to confusion and mistakes in estimating the time it takes to implement changes and budgets. Because many maintainers do not use maintenance categories, there is confusion and misinformation about maintenance.

Many users are under the impression that they can request any type of software change or enhancement because the change will be as easy as lubricating a part. They do not understand that most software maintenance actions require major structural changes. The users expect software maintenance to have the same mean time between failures as for hardware maintenance. Users expect software maintainers to implement corrections for problems as quickly as hardware maintainers. They expect software to be like hardware, and this is the problem-software is not like hardware! Software maintenance practitioners must study what really happens in maintenance-corrections, enhancements and improvements-and let the users know. It is important to stress to users that maintenance is more than fixing bugs.

Although there is no real agreement on the actual costs, sufficient data exists to indicate that maintenance does consume a large portion of overall software life-cycle costs. It is considered that only one-fourth to one-third of all life-cycle costs are attributed to software development, and that some 67% of life-cycle costs are expended in the Operations and Maintenance phase of the life cycle.

Recent literature suggests that maintenance is gaining more notoriety because of its increasing costs.

Rising maintenance costs can be also due to the age and lack of structure of the software. Much of today`s software is ten to fifteen years old, and was created without benefit of the best design and coding techniques. The result is poorly designed structures, poor coding, poor logic, and poor documentation for the systems that must be maintained.

Figure …. Distribution of maintenance activities per category

One of the early software development models was the Code and Fix, which consists of two steps: first code and then fix the code.There were many difficulties with this approach. After a time, because of enhancements, updates, and a lack of formal change standards, the code structure deteriorated. A design phase was needed. Often the software did not match the users` needs. Eventually a testing phase was developed.

Over the next few decades, the models evolved as the development process became more sophisticated. One of the more popular models in the 1950s was the Stagewise software development model; it broke down the process into successive stages. Eventually this model evolved into the Waterfall software development model. The Waterfall model added some enhancements to Stagewise model, first enhancement concerns the need to create a system of feedback between stages, and the second enhancement was the initial incorporation of prototyping in the software life cycle.

The 1980`s brought about a classification of software maintenance models. There are two families of maintenance models: process-oriented, and organizational/business- oriented models. Each model was able to provide a different view of the maintenance effort. Extensive research into process modeling is conducted at the Software Engineering Institute. So a five levels of process maturity are now used to faster software process improvement for software development organizations. These five levels of process maturity are as follows: Initial (Basic Management Control) -> Repeatable (Process Definition) -> Defined (Process Measurement) -> Managed (Process control) -> Optimizing.

Schneidewind stressed the need for standardization in software maintenance and, as a results, the IEE Computer Society Engineering Standards Subcomittee published the “IEEE Standard for Software Maintenance”. This represents an iterative process for managing and executing software maintenance activities. The process model include input, process, control, and output for software maintenance. Standard states that maintenance planning should begin when planning for software development begins.

Problem/Modification Identification, Classification, and Prioritization. A request for change to the software starts the maintenance process. The maintenance organization determines what type of request it is, the appropriate maintenance category and its handling priority.

Analysis. During this phase, a feasibility analysis and then a detailed analysis are conducted. The feasibility analysis look at items such as the impact of the modification, alternative solutions, and costs. The detailed analysis provides firm requirements for the modification, identifies the elements of modification, devises a test strategy, and develops and implementation plan. Successful maintainers attribute much of their success to scheduled releases.

Design. At this point all the information gathered up before (includes documents from Analysis stage) is now reviewed and is used to design the modification. This phase provides an updated design baseline, updated test plans, a revised detailed analysis, and verified requirements.

Figure The IEEE Maintenance process

System Test. At this step is tested the interfaces between programs to ensure that the system meets all of the original requirements plus the requested changes. Regression testing is part of system testing and validates that no new faults have been introduced. Testing is one of the most important phases. Testing should ensure that the new production system will function properly, that the original requirements are still satisfied, and that the new changes are implemented accordingly. The focus of maintenance testing should not focus on finding errors but on ensuring that the system runs correctly.

Acceptance Test. At this step the testing is done on a fully integrated system, and is done by either the customer, the user, or a third party. During acceptance testing, the tested should do the following: report the tst results, conduct a functional configuration audit (determine if the system functions in accordance with requirements), and establish a new software version.

Delivery. During this phase, the supplier delivers the new system to the user for installation and operation. The supplier must notify all the users, develop an archival version for backup and perform installation and training. After delivery, operation of the system begins.

Models continue to evolve. The international community now has a maintenance model of its own. The model is provided under the maintenance process of the recently published international standard ISO/IEC 12207. Of the note is that the new definition of maintenance provided earlier in this chapter, is consistent with the maintenance process of ISO/IEC 12207.

The IS establishes a top-level architecture of the software life cycle with the life cycle beginning at concept and ending with retirement of the software. The IS groups the activities that are performed during the life cycle into five primary processes, eight supporting processes, and four organization processes. Each life-cycle process is divided into a list of activities, and each

activity is further divided into a list of tasks.

The primary processes provide for conducting major functions during the life cycle. As a

practical matter, the acquisition process causes the initiation of the software life cycle. The supply process responds by performing the development, operation, and/or maintenance process. A primary party (the acquirer, the supplier, the developer, the operator, and the maintainer of software products), initiates or performs the development, operation, or maintenance of software products.

The supporting processes may be used, as needed, by other processes, and they can support

other processes with a specific purpose. These processes contribute to the success and quality

of the software project.

The organizational processes may be employed by an organization to establish, implement, and improve a life-cycle process. These processes are normally outside specific contracts and projects, but the lessons learned while doing these processes help to improve the overall organization.

Acquisition Process. The acquisition process provides guidance for the acquirer of software. It defines the activities of the acquirer and the organization that acquires a system, software product, or software service. It begins with the need to acquire software, continues with requests-for-proposals, selection of suppliers, acquisition-project management, and supplier monitoring and interface. This process ends with acceptance of products and services.

Supply Process. The supply process provides guidance for the provider of development products, maintenance service, and operation service. It defines activities for the supplier. It begins with a proposal and agreement, and continues with project management. It ends with delivery of products and services. This process extends to training and assistance to the acquirer.

Development Process. The development process provides guidance for the developer of software. It defines the activities of the developer, the organization that defines and develops the software product. It begins with analysis of requirements and continues with design, coding, testing, and integration. This process ends with product completion and installation.

Operation Process. The operation process provides guidance for the operation of software. It defines the activities of the operator, the organization that provides the service of operating a computer system for users. This process includes operational support to users and depends on the maintenance process for modifications.

Maintenance Process. The maintenance process provides guidance for the maintenance of software. It defines the activities of the maintainer, the organization that provides the service of maintaining the software product. It is used to plan for maintenance and to modify the software due to the need for corrections, enhancements, or preventive actions. This process also includes the migration and retirement of the software.

Software types

2.2.1 Application software

Application software, also known as an application or an “app”, is computer software designed to help the user to perform specific tasks. Examples would include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with documents. Apps can be bundled with the computer and its system software, or may be published separately. Moreover apps applies the power of a particular computing platform or system software to a particular purpose.

Except for “system software”, which provides the infrastructure, in the computer, all software programs are application programs.

There are many different ways to divide up different types of application software, as follows:

Package software

Custom software

Web applications

Open Source software

Proprietary software

Share Ware

Freeware

2.2.2 Package software

A package management system represents a collection of software tools to automate the process of installing, upgrading, configuring and removing software package for a computer`s operating system in a consistent manner. Usually it maintains a database of software dependencies and version information to prevent software mismatches and missing prerequisites.

Packages are distributions of software, applications and data. Packages also contain metadata, such as the software`s name, description of its purpose, version number, vendor, checksum, and a list of dependencies necessary for the software to run properly. Upon installation, metadata is stored in a local package database. Package management systems are designed to save organizations time and money through remote administration and software distribution technology that eliminates the need for manual installs and updates.

A software package is a software that has been build from source with one of the available package management systems. The package is typically provided as compiled code, with additional meta-information such as a package description, package version, or dependencies. The package management system can evaluate this meta-information to allow packages searches; to perform automatic updates to a newer version; to check that all dependencies of a package are fulfilled and/or to fulfill them automatically by installing missing packages.

When the version dependency allows for it, libraries are packaged independently and used commonly. This introduces something called "dependency hell", a serious burden upon the distribution maintainers. But it also reduces code duplication inside of the operating system to a minimum, and at the same time multiplies the possibilities to test the version of a library for stability and security flaws

2.2.3 Custom software

Custom software represents a software that is specially developed for some specific organization or other user. As the definition states, custom software are developed for a single customer and it can accommodate that customers particular preferences and expectations. It can be designed in stage by stage processes, allowing all nuances and possible hidden dangers to be taken into account, including issues which were not mentioned in the specifications.

The opposite of custom software is off-the-shelf software, also known as pre-packaged or pre-written software. One major difference between custom and non-custom software is that with pre-written software, you do not technically own the software – you are paying for the right to use the software (a license), and the amount of money you pay usually increases with the number of users. With custom software, you own the rights to the software, and you do not pay additional fees to add users, moreover you are free to resell the software to any other party.

Custom software can be used to combine features from other packages with the features that you company needs, or it can enable you to instantly access the information you need in a format that makes sense for you.

The reason for which most companies choose to use custom software is because although there are so many programs, serving so many generalized purposes that it is almost impossible to find one program that does exactly what you want it to do.

There exist companies that have the goal to develop not for the mass auditorium, but rather developed to be unique, for a single client. The custom software development services emphasizes on the most progressive technologies alone with preferences and expectations of the customer.

Initially outsourcing custom software development work might seem a costlier choice but with time has proved that the price difference is deceptive as the variation is only in the initial cost. In the long run the overall cost will prove to be much lower when you work with them.

2.2.4 Web Applications

Web applications also known as web apps represent any application software that runs in a web browser or are created in a browser-supported programming language and relies on a common web browser to render the application.

Web applications are very popular due to the convenience of using a web browser as a client. The ability to update and maintain web applications without distributing and installing software on potentially thousands of client computers is also a key reason for their popularity, as is the inherent support for cross-platform compatibility.

In earlier computing models, the load for the application was shared between code on the serve and code installed on each client locally, an application had its own client program which served as its user interface and had to be separately installed on each user`s personal computer. An upgrade to the server-side code of the application would typically also require an upgrade to the client-side code installed on each user workstation, adding to the support cost and decreasing productivity.

In the early days of the Web, each individual web page was delivered to the client as a static document, but the sequence of pages could provide an interactive experience, as user input is returned through web form elements embedded in the page markup.

Although at the beginning the original purpose of the World Wide Web was merely to present information, today modern Web applications have grown into complex distributed applications.

Today`s Web Applications are complex distributed applications, that deploy their functionality to the World Wide Web. In many cases Web Applications have been developed by using an ad-hoc and unsystematic development process. As a consequence these applications have a high probability of failure during operations. In order to develop high quality Web Application both the development process and the architecture used must take into account the features and operational environment of Web Applications. Many applications are developed for the web, in such different areas as banking and finance, e-commerce, education, government and entertaining. Legacy information and database systems are being migrated to Web environments, in order to deploy their functionality on the Web. Electronic commerce through the Internet is rapidly growing, cutting across national boundaries.

Today`s web applications are offering many services that are attractive for the users. The taxonomy of web applications indicates that those are growing in complexity and size. This makes developing new Web applications and maintaining existing Web applications a major task. A good web application can represent a competitive advantage for a company. There are many companies that are depending on their applications to stay in business. Despite the important that many Web applications have gained for both companies and their customers, the development process of Web applications remains rather ad-hoc, this means that there is no formal planning, testing, quality control or assurance.

The main advantages web applications have over traditional applications are:

Web applications are more accessible because of the HTTP protocol which is used in web applications as a standard protocol that can travel across corporate firewalls. The only client software a user need is a web browser. Also, web applications are available on many platforms and are packaged with most operating systems;

Web applications have a lower maintenance and development cost. Since Web applications are running in web browser, they do not depend on installing client software on each users computer. Web applications can be maintained by modifying code that resides on a server. This reduces the time and cost of upgrade and deployment of web applications compared to traditional client/server applications;

Web applications are not limited to any type of application. They can range from simple static web pages to sophisticated applications. Different categories of web applications are grouped together according to their data and control complexity;

Figure … Physical View of a Web Application

The Physical view presents the mapping of the components in the Development view to the components in the environment. Web applications have a right environment. The user of a Web application uses the web browser as the interface to get access to the web application functionality. The browser transmits the users action to the web server, sending the requests using the HTTP protocol. The web server determines if the request can be done directly. Otherwise the applications server must be invoked. If the user wants to retrieve some data from the database, the application server must be invoked. Finally, the web server with the possible returns from the application server generates the HTML pages that is returned to the user.

Open Source Software

Open Source Software or OSS, represents a computer software that is available in source code form. Software source code and certain other rights normally reserved for copyright holders are provided under an open-source license that permits users to study, change, improve and at times also to distribute the software.

In computing the source code represents any collection of computer instructions written using any computer language. The source code of a program is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source code. The source code is often transformed by a compiler program into low-level machine code understood by the computer. The machine code might then be stored for execution at a later time. Alternatively, an interpreter can be used to analyze and perform the outcomes of the source code program directly on the fly.

Open source software is very often developed in a public, collaborative manner. Open source software is the most prominent example of open-source development and often compared to user-generated content or open content movements.

Some initiatives wish to mandate that open source solutions be used when all things are equal, others address the need for consideration of open source software alongside proprietary offerings when new purchasing decisions are being pursued.

Consideration for the open source software option in developing regions will occur in the context of the broader Information and Communication Technology priorities. Assuming there is appropriate access to the resources, open source solutions can be applied in addressing individual needs, along with pursuits in the public and private sector.

Web sites based on open source software can be used for needs such as e-government portals, educational information, sharing or advertising a small business products and services. E-mail services can be established to provide communication with regional or global contacts. Efforts are being also pursued to localize a variety of open source software solutions to support micro banking and other business software needs.

Since software use continues to extent into new areas of human endeavor, benefits derived vary depending on the constituency addressed, the size of both the user and developer communities, and whether the needs focus on public use or business profit.

In some settings, the activities and roles of both open source software developers and users will remain unchanged from those of proprietary efforts. However, the openness of the open source model emphasizes the concepts of access community choice and collaboration. Each in its own right should benefit users.

Open source software does not imply an adherence to open standards, open source developers seem more aligned with open standards goals than some proprietary providers. This should increase information sharing among various technology constituencies and benefit users by increasing the control of its ownership.

Open source software is freely available, with access to the programming source code as one component, fact that can be viewed as a public good created by citizens contributing their work in an open and collaborative fashion. Participation in a global community can help broaden the opportunity to share and adapt open source software ideas among developing countries. As a public good, open source software can promote local information and communication technology capacity development by focusing on community needs that can drive the creation of local research and development efforts.

Among the security plus that open source software is providing, there are more benefits versus proprietary software, like the potential for fewer bugs in the open source software, and when noticed the bugs can be quickly fixed because of the access to source code.

A very important fact regarding open source software is that those can be mixed with Proprietary Software. It is incorrect to assume that open source application programs are designed exclusively to operate on open source software systems. Many are available for use with multiple operating systems and can be deployed with proprietary solutions.

2.2.6 Proprietary Software

Software that is proprietary is usually licensed to users on a non-exclusive basis, usually for fee, and the ownership of the source code for the software, along with any modifications to this code is reserved to the organization that owns and is licensing the code. This is also sometimes referred to as a closed system since there is a limited license to use the software without modification to the source code and thus access to the source code is closed rather than open. This type of software is also sometimes referred to as commercial software, although this may be confusing since some open source software may be licensed for a fee and some proprietary software may be licensed for use without charge. This represents a generic classification of proprietary software to distinguish software ownership that is not open or free. Some software may be developed internally and never distributed. In most situations, this type of software would be considered proprietary since there are not other users outside of the originating environment.

As an illustration of this type of license, when an individual or organization purchases software, the user acquires, along with the physical copy of the software and the manual, the right to use the software for its intended purpose. Under the terms of most proprietary licenses, the user is bound not to copy the work, not to make derivative works based on the work and not to authorize anyone else to do either of these two things. The elimination of these three restrictions is the foundation of open source licensing.

Within this proprietary realm, there is a classification known as shareware. The distinction for this classification is, for most proprietary software, you have to pay for the product before you use it. With shareware, the user is given a free trial period to use the product. When the free trial period ends, the user must pay the license fee in order to continue using the product. Shareware is generally copyrighted, but the initial users may be granted a right to further distribute the shareware, with the expectation that each user that continues to use the shareware after the designated trial period would be obligated to pay the license fee.

It is important to note that both open source and proprietary software have certain aspects in common: both are governed by licenses, using software so classified has legal considerations and both types of software are regulated by legally defined intellectual property rights. Most of the distinctions have to do with ownership of code and rights to modify and distribute the code. The distinctions do not always have to do anything with cost. While for the use of most proprietary software there is a fee attached, some proprietary software may be made available for use at no cost. Conversely, some open source software or freeware might be purchased if a fee is paid.

The price of proprietary software very much, depending on the complexity of the system The cost is made up of a base fee for software, integration and services and annual licensing/maintenance fees.

Although the price can be pretty high, compared to other software types, the customized product user will get includes higher levels of security and functionality, continuous innovation, a greater ability to scale, training and support and a lower requirement for technical skills. In order to support all those elements and maintain high availability websites, the costs must be at the same level.

Service and support represent one of the greatest advantages presented by proprietary software. Providers of proprietary software often offer ongoing support to users, which represent a key benefit for users without technical expertise. This type of software are user friendly because users are working with companies that are viable, and people with great knowledge of the products and services who should be able to answer any related question.

Moreover although proprietary software providers do not allow users to view or alter the source code, this can be viewed as a disadvantage to some, it ensures the security and reliability of the software. Furthermore, most of the providers customize the software for specific users to provide more flexibility. Most of proprietary software providers have online forums or blogs that create value by sharing ideas, strategies and best practices, which also maintain innovation and allow the product to adapt with user needs.

Another great advantage of proprietary software is the fact that because is out for sale, the application is fully tested, and the assistance with implementation is part of the package. Because vendors must ensure their software does not become redundant, users often get new releases.

In addition, training manuals and guides are provided, helping the users understand the application. This enables faster training and provides an immediate reference, allowing users to get used to the application a lot quicker. While many people see proprietary software as closed, todays proprietary software offers a vast array of mechanisms for enhancement by third party systems and developers. Proprietary software is viewed as a secured software because it is developed in a controlled environment by a concentrated team with a common direction.

Proprietary software vendors can prohibit users from sharing the software with others. Another unique license is required for another party to use the software. In case of proprietary software with source code available, the vendor may also prohibit customers from distributing their modifications to the source code. Proprietary software often stores some of its data in file formats which are incompatible with other software, and may also communicate using protocols which are incompatible. Such formats and protocols may be restricted as trade secrets or subjects to patents.

2.2.7 Shareware software

Shareware software represent the part of proprietary software that is provided to users on a limited basis and only for a certain limited trial basis and pursuant to a license which restricts any commercial benefit, use or exploitation of the software. While there may not be an initial up-front payment, the license pursuant to which the software is provided limits and restricts usage and typically restricts any distribution for commercial purposes and is often limited by any combination of functionality, availability or convenience. Shareware is often offered as a download from an internet website or as a compact disc included with a magazine.

The idea behind shareware software is to give potential users the opportunity to try out the program on a limited basis for a limited time and judge its usefulness before purchasing a license for the full version of the software. Unless their product is already well known, some companies tend to offer samples. Most of the time shareware applications are offered either with certain features only or as a full version but for a limited period a time. In this context, shareware is synonym to the free trial version of normal commercial software. Often many times shareware software providers are not offering any updates or support before a license is purchased. Also as soon as the trial period ends, the application might stop running until the user purchases a license for the respective application.

Shareware can be packaged with an adware, which represents any software package which automatically renders advertisements in order to generate revenue for its author. During the install of the intended software, the user gets a requirement to agree to the terms of click thorough licensing or similar licensing which governs the installation of the software.

Shareware is produced by accomplished programmers, just like retail software. There is good and bad shareware software, just like there is good and bad retail software. The primary difference between share and retail software is that with shareware you know if it`s good or bad before you pay for it. Registration of shareware products, in addition to being required, is also an incentive for programmers to continue to produce quality software for the shareware market.

2.2.8 Freeware

One of the first usage of freeware term was done by Andre Fluegelman, a publisher, photographer, programmer and attorney, best known as a pioneer of what is now known as the shareware business model for software marketing, in 1982 when he wanted to sell a communications program that he had created but for which he did not wish to use traditional methods of distribution because of their costs. Later on, the term freeware was used often in 1980s and 1990s for programs released only as executables, with source code not available.

Freeware software is referring to an software that is available for use at no monetary cost or for an optional fee, but usually closed source with one or more restricted usage rights. Freeware is in contrast to commercial software, which is typically sold for profit, but might be distributed for a business or commercial purpose in the aim to expand the market share of a premium product.

Nowadays the piracy rates are so high, that free software does not really mean much to the regular computer user. The reasoning is that since all of it is free anyway, what is the big difference between pirated software and freeware. A lot of free software is designed and coded by individuals and communities that saw a serious lack in the functionality of existing software.

Due to developments in the sophistication and ready availability of free software, or freeware, there now exists many software platforms that, while not being identical to their paid counterparts, still serve as more than adequate preparation in developing the sorts of technology-use skills that schools have sought to install.

Always has been some confusions between freeware software and open source software, and while those two categories can often overlap and share similarities, those should still be seen as distinct from one another. Not all free software is open source, and vice versa. Freeware is often developed to encourage end users to pay for other related services or tools, can be used to generate advertising revenue, may be seemingly created out of altruism, or more pessimistically out of a desire to grow brand loyalty. Many of the new freeware applications serve to mirror their more established paid competitors, and therefore the transferability of skills from a freeware application to a similar paid piece of software can often be quite seamless. Another reason for which people tend to use freeware software is the fact that software market and options available to today`s users is expanding and evolving at such a rapid rate that it would be incredible naive to assume that the commercial software solution pursued today will remain the dominant toll in even a few years. The current process of software selection and deployment is simply not adequate in meeting the needs of users, and so more efficient and adaptable models need to be pursued.

Software classified as freeware is licensed at no cost and is either fully functional for an unlimited time; or has basic functions enables with a fully functional version available commercially or as shareware. The developer usually restricts one or more rights of the user, including the rights to use, copy, distribute, modify and make derivative works of the software or extract the source code. The software license may also impose various other restrictions, such as restricted use over a network, restricted use on a server, restricted use in a combination with some types of other software or with some hardware devices, prohibited distribution over the internet other than linking the author`s website, restricted distribution without author`s consent, restricted number of copies, etc.

The “free” in freeware refers to the price of the software, which is typically proprietary and distributed without source code. By contrast, the free in free software refers to freedoms granted users under the software license and such software may be sold at a price.

Freeware cannot economically rely on commercial promotion. Thus the internet is the primary resource for information on which freeware is available, used, and is not a malicious software.

3 Implementation

OpenERP is a complete web based accounting and business management system that requires only a web-browser and pdf reader to use. It has a wide range of features suitable for many businesses particularly distributed businesses in wholesale, distribution and manufacturing.

OpenERP is an open source enterprise resurouce planning software suite actively programmed, supported and organized by Open ERP s.a.. Since not long ago, OpenERP was rebranded to Odoo, and the renaimed software claims to not conform to standard expectations of ERP systems. In production and development, open source as a development model promotes universal access via free license to a product design or blueprint and universal redistribution of that design or blueprint, including subsequent improvements to it by anyone. The feature set is continually expanding as new businesses and developers adopt it.

3.1 Installation of OpenERP

OpenERP software is compatible with all operating systems, it can be installed on Windows, Linux, Ubuntu, Mac or Censor.

For my testing I installed OpenERP on Microsoft Windows operating system. When installing on Windows system, there exists two options :

All in one installation – which is the easiest and quickest way to install OpenERP. It installs all components (OpenERP Server and PostgreSQL database) pre-configured on one computer. This installation is recommended if you do not have any major customizations.

Independent Installation – during which all components required to run OpenERP will have to be downloaded an installed separately. This mode is practical if you are already working with or plan to use a different version of PostgreSQL than the one provided with the All in One installer.

3.1.1 Download OpenERP

All in One installer from the official OpenERP website.

Figure: Install OpenERP

Open the installer downloaded at the above step. Select the default language for installation, user can choose between English or French. After selecting the language proceed to the next step of the installation by clicking the next button.

3.1.2 Select components to install

The default install type is All in One, and will install the OpenERP Server – that stores data through an interface with a database, and web client for web browsers access, GTK Desktop Client – a cross-platform widget toolkit for creating graphical user interfaces, Web Client – the client, or user side of the Web and PostgreSQL Database – an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance. Or, you may customize your installation by selecting only the components you require.

Figure: Configure the install of OpenERP

3.1.3 Configure connection to database

The installer will suggest default parameters to complete your PostgreSQL connection configuration. Those parameters can be changed according to anyone requirements.

Figure: Connect to the server

3.1.4 Finish the installation

On successful installation of OpenERP, you will get an appropriate confirmation. You can click finish to close the setup wizard.

After installing with succes the application user can open and then log in the application. After finishing the installation, a database need to be created, database in which all the information will be stored.

Figure: Finalization of OpenERP installation

3.2 Connecting to OpenERP

You do not need to manually start the OpenERP Server, because it is installed as a Windows service and automatically started when system was turned on. However, you may access it from the shortcuts created in the Start Menu for OpenERp, or simply by connecting with your preferred browser to web interface, by default available on httl://localhost:8069.

After opening OpenERP, you will need to select the database list at the top-right corner to choose a database to connect to. After installation, by default no database will be available, the database list will be empty. A database can be created using the Manage Databases link on the Login Page.

Figure: Create new database screen

The Login consists of a Username, Password and database selection.

3.3 Configure OpenERP

This provides an easy way to install modules, thanks to its user-friendly and easy-to-use interface. After installing any featured OpenERP application you will find out the Configuration Menu. The user may invoke this form at his own convenience using the menu Settings -> Configuration. Extra applications can simply be installed by checking the corresponding options and clicking Apply.

Figure: General Settings

Configuration settings can be changed by the user at any point it feels the need to load additional features.

3.4 Module installation

Because usually beside using only one program, many users use separate text and spreadsheet files to cover specific business needs. OpenERP offer modules to integrate text and spreadsheet files. This offers to the end user the possibility to take these files into accout whilst using OpenERP. Its purpose is to offer a quick fix solution for those users, where the creation of a custom module to cover the particular user need would take some more time to obtain.

Open the list of modules from Settings-> Modules -> Modules. Search for modules by entering its name in the search text in the list that appears in the right corner.The form that descibes the module gives you useful information such as its version number, its status and a review of its functionality.By clicking the install butoon the status of the module changes to installed.

Figure: review available modules and their status

The module shows two tabs before it is installed. The first tab gives basic information about the module, and the second gives a list of modules that this module depends on. So when installing a module, OpenERP automatically selects all the necessary dependencies to install this module.

Although you can install a module and all its dependencies at once, you cannot remove them in one fell swoop – you would have to uninstall modules one by one. This is due to the fact that uninstalling is more complex than installing because you have to handle existing system data.

Although it works quite well, unistalling modules is not perfect in OpenERP. It is not guaranteed to return the sytstem exactly to the state it was in before installation. So it is highly recommended to make a backup of the database before installing the new modules so that first the new modules can be tested and then decide whether they are suitable or not. If they are not, user can return to the backup database. If they are, then the user will probably still reinstall the modules on the backup so that the test data will not be deleted.

After installing the necessary modules data can be imported or created.

3.5 Using OpenERP

When configuring OpenERP, the software allows you to choose predefined charts of accounts, which include all basic configurations, such as tax codes and fiscal positions. However a custom charge of accounts can also be configured.

A fiscal year or financial year corresponds to twelve months for a company. Most often the fiscal year corresponds to a calendar year. The fiscal year can be divided into monthly or quarterly periods. OpenERP offers you the possibility to work on several years at the same time. Which represent an advantage because you have the opportunity to create three-year budgets.

In order to define your fiscal year, you need to use the menu Settings -> Configuration -> Invoicing.

All accounting entries need to appear in an accounting journal, reason why a separate journal should be created for each sales type.

At the end of a financial year, the closing balance of that year will be transferred as an opening balance to the new financial year. Because is almost impossible to close a year at once, users are allowed to transfer the new opening balance numerous times.

As a conclusion, in order to put analytic accounts in place, for the initial setup the user should :

– set up the chart of accounts;

– create the different journals;

– link the analytic journals to the accounting journals;

3.5.1 Create Vehicles

In order to create vehicles, you need to go to the Fleet tab, that was added when installing the Fleet plugin, from the left menu choose the Vehicles option and then click on the red Create button.

Complete the fields with the information and then click save.

Figure: Review vehicle

The information can always be edited, so any small errors can be later corrected.

3.5.2 Create customers

In order to create customers you need to have the Accounting and Finance plugin installed.

Customers are added by going to the Sales tab and chosing from the left Menu the Customers tab, and on the opened page a Create button will be available.

Figure: Review Customer

Also, if available a photo can be added. Customer information can be edited after the customer is saved.

3.5.3 Create Vehicle Contracts

Each time a vehicle is leased a contract is created.

The contract can be created by going to the Fleet tab and using the left menu Vehicles Contracts and on the opened page click on Create.

Figure: Review Contract

By contract we also make the link beween the rented car and customer. Other important information that need to be completed on each contract is the contract start and expiration dates and also the contract cost value. The cost is very important because from each contract an invoice will be created.

On each contract there is a tab named Generated Costs in which the owner can add any generated costs or specifications that are related to the contract.

The contract can be edited.

3.5.4 Create invoices

In order to create invoices first we need to have the customer and the contract created.

If this is the case a customer invoice can be created by using the Accounting tab. Having the Accounting tab selected, we need to select Customer Invoices from the left menu, then a red Create button should be available.

Figure: Review Invoice

When creating the Invoice we need to know for which customer we will create the invoice, what accounts should the invoice be created on, which product was used by the according custome. The quantity will represent the number of days for which the customer rented the car. Also very important is to select the invoice date.

Figure: Review payment

After the invoice is validated, by clicking on the Validate button, the information can no longer be edited.Although it can`t be edited, the invoice can be Refunded by clicking the Refund Invoice button.

When the customer will pay the invoice a Customer Payment will be created. The Payment will be linked to an Invoice and invoices status will be updated to paid.

3.5.5 Reporting configuration

OpenERP allows two distinct report types, statistical reports and report documents.

Figure: Review Monthly Turnover diagram

Statistical reports are calculated data, often represented in the form of lists or graphs. These reports are dynamic, and the user has the posibility to navigate through the data that comprise the figures.

Figure: Sale/Purchase Journal Report

Report documents are used to print system documents. The result is usually a pdf file, generated by a selection made on the screen. Furthermore, OpenERP has the advantage to open these reports using a free software, OpenOffice. While opened in OpenOffice the reports can be edited.

The two reporting types can be created or modified without needing any development, this can be done directly in the client interface of OpenERP or from OpenOffice.org .

Many reports are configured in advance in OpenERP, those can be find under the Reporting menu and then selecting the main menu entry.

OpenERP gives the possibility of developing reports so it will meet each users specific needs. To defined a new analysis of the system`s data, the base_report_creator module need to be installed. Then as the reporting tools are configured, Query Builder need to be selected for installation. By installing the Query Builder, the user has then the posibility to create complex queries on the database, in a simple and visual way.

Beside the reporting, OpenERP allows users to create a custom dashboard. A dashboard is a selection of reports previously defined in OpenERP. Users can choose from hundreads of predefined reports and, for each report, indicate its position on the dashboard.

In order to create and configure reports using OpenOffice.org software, the OpenOffice.org Write plugin need to be installed. This tool gives the users a big productivity improvement. Using it, templates can be created for all companys documents which will lead in reducing the work of creating and laying out data and customer documents.

The system is very complex and gives both simple and powerful solutions for reporting, because it gives the user the benefits of all of the layout facilities offered by OpenOffice Write, as well as all of the data and calculation provided by OpenERP. Reports can be created or modified directly in OpenOffice and then those can be used in OpenERP.

The OpenOffice.org plugin enables users to search for fields in OpenERP and integrate them into their document temaplates. Data loops in tables or sections, enables users to attach several lines to an order. Once a new report is defined, it appears directly in the OpenERP system and is available for users.

Reports are stored in OpenERP database and are accessible to averyone who has rights to use the database without any need for the installation of OpenOffice.org on their personal computers. The document modifications are applied to a single database.

Figure : Menu OpenERP Report in OpenOffice.org Writer

In order to configure reports, OpenOffice.org need to be connected to OpenERP.

The connection is done using the OpenERP Report Designed -> Server parameters option in the top menu of OpenOffice.org Writer. Then a form to complete the connection to OpenERP server is displayed.

Figure : connect to Open ERP Server

By pressing next, a new form will be displayed which will allow the connection to a certain database.Username and password will also be required.

Figure select database.

When a connection is successfully done, a meesage is displayed.

To modify an existing report, from the OpenERP Report Designer the Modify Existing Report need to be selected. After selecting the option to Modify Existing Report, a list with all available reports is displayed.

Figure List of all available reports.

After choosing the report in the Modify Existing Report dialog box, the report will be opened in edit mode in a separate OpenOffice window.

The older reports may not all have been converted into the new form supported by OpenERP. Data expressions in the old format are shown within double brackets and not in OpenOffice.org fields.

However, old report format can be transformed to the new format from the OpenOffice.org menu OpenERP Report Designer -> Convert Brackets -> Fields. This option will convert all Brackets into fields. Using the add an expression button, which is displayed in the options window, user can enter expressions in the Python language. These expressions can use all of the object fields for their calculations.

The document is modified in its English version. The document will be translated by the Open ERP translation system when the user use it through the client interface, this can be configured to each users own setup to translate to another lagnauge if needed. So the report need to be configured only once, even if the system uses other languages, but translations need to be configured into the system.

Figure Report in Edit form

In order to create a new report, the Open a New Report option need to be selected in OpenOffice. The general template is made up of loops and fields from the object, which can also be looped. Those can be formated and configured and per each users needs.

After the report has been created, it need to be sent to the server by using the Send to the server functionality from the OpenERP Report Designer menu in OpenOffice. When selecting this option a Send to Server dialog box will be opened. A technical name for the report is assigned by default, to make it appear beside the other purchase order reports. The templace can be renamed. To send it to the server, user can specify if it prefers OpenERP to produce a PDF when the user prints the document, or if OpenERP should open the document for editing in OpenOffice.org writer before printing.

When creating new reports there is an option available to create custom header for those. When saving new reports and reports that have been modified, the user have an options to select a header. The header is a template that creats a standard page header and footer containing data that is defined in each database.

The header is available to all users of the OpenERP server. Its template can be found on the file system of the server and is common to all the users of the respective server. Although reports attach information about the company thats printing them the user can replice various names in the temaplte with values from the database, but the layout of the page will stay common to all databases on the server.

3.5.6 Importing and Exporting Data

Every form in OpenERp has a standard mechanixm for importing data from a csv file through the client user interface.

Information can be exported from OpenERP in a csv file by selecting data and then clicking the Export button. By clicking the Export button a csv file will be generated, file that can be saved on computer.

The easiest way to import data is by exporting the information that we want to import, delete all the data from the csv file and leave only the template. Then complete the information accordign to users needs.

The import button is always displayed near the Create button.

When importing, the system proposes available data alternatives, in case it does not find the data the user specified. System lists all the errors, allowing the user to correct on sport prior to finalizing the import process.

Importing is very usefull when the changing the operating system for the company. Is usefull because by importing users can save alot of time.

3.5.7 Dashboards

In OpenERP user can create its own dasboard without involving a technical person. Dashboard feature is included in the module board. Dashboard features is one of the major features in OpenERP because it simplifies the analysis of information.

Figure : Costs by Month diagram from the Fleet Dashboard

The diagram can be customized as per each users needs. This can be done directly from the Fleet Dashboard. A dashboard can display mutiple diagrams, each displaying different information. Beside the dashboards that come with different modules, also a personal dashboard is present in OpenERP. The personal dashboard can also be configured as per user request and can display different information.

Figure: Overall company analysis from the Accounting Dashboard

In this dashboard we can observe the Debit and Credit amounts and also the balances. As all other dashboards this dashboard can also be customized. Other charts and reports can be added to the dashboard by using the Add to Dashboard functionality.

Figure: Monthly Turnover diagram from the Sales Dashboard

Figure: Treasury Analysis monthly grouped

3.6 Using PostgreSQL

PostgreSQL is an open source object-relational database system. It runs on all major operating systems and it has full support for foreign keys, joins, views, triggers, and stored procedures.

PostgreSQL is capable of running stored procedures in more than a dozen programming languages, like Java, Perl, Python, Tcl, C/C++ , and its own PL/pgSQL, which is similar to Oracles PL/SQL. Included with its standard function library are hundreads of built-in functions that range from basic math and string operations to cryptography and Oracle compatibility. Triggers and stored procedures can be written in C and loaded into the database as a library, allowing great flexibility in extending its capabilities. PostgreSQL also includes a framework that allows developers to define and create their own custom data types along with supporting functions and operators that defined their behavior. A host of advanced data types have been created that range from geometric and spatial primitves to network addresses to even International Standard Book Number/International Standard Serial Number data types, all of which can be optionally added to the system.

Just as there are many procedure languages supported by PostrgreSQL, there are also many library interfaces as well, allowing various languages both compiled and interprested to interface with PostgreSQL. There are interfaces for Java, Perl, Python, Ruby, C, C++, PHP, Lisp, Scheme and many others.

PostrgreSQL has the source code available under a liberal open source license named the PostgreSQL License. This license gives the user freedom to use, modify and distribute PostgreSQL in any form he likes, open or closed source. Any modifications, enhancements, or changes that are done, belong to the person that does them. This makes from PostgreSQL a powerfull database system that can be further developed.

When installing PostgreSQL the user can select the options that best suits its needs. After finishing the installation of the required software, a PostgreSQL user need to be created. This user must be the same as the system user, because OpenERP will use this user to connect to PostgreSQL.

When the installation is completed it will give user access to PgAdminIII, a Graphical User Interface, that can be used to perform all kind of operations on the PostgreSQL database. By default, a default database will be created by the name of postgres and a default user by the name of postgres will also be created.

In order to access the database the connection to the database need to be configured.

Figure PostgreSQL connection to OpenERP

PostgreSQL has many advanced features, such as :

User-defined types

Table inheritance

Sophisitcated locking mechanism

Foreign key referential integrity

Views, rules, sub-select

Nested transactions

Being open source software, users have access to PostgreSQL code and if necessary can edit or customize the software according their needs. However in order to do so, the user need to understand and be able to write and execute good SQL queries. By logging into PostgreSQL users have access to OpenERP database and can create select statements that query data from a table or mutiple tables joined by the join function. In order to have access to all those, the user need to access the SQL Query Editor. In the opened window Structed Query Language can be used to write select statements in order to display data. Beside select statements, also tables can be created or updated. Although the security is high, if not used properly PostgreSQL can alter the database and unsolvable issues can be displayed in front end.

Structured Query Language is a special purposed programming language designed for managing data held in a relational database management system.

SQL was initially developed at IBM in the early 1970s, version which was initially called SEQUEL and was designed to manipulate and retrieve data stored in IBM original quasi-relational database management system, which was developed during the 1970s. The acronym SEQUEL was later changed to SQL because SEQUEL was a trademark of an UK aircraft company.

Figure Data stored in account_account table.

The SQL language is subdivided into several language elements, including :

Clauses, which are constituent components of statements and queries;

Expressions, which can produce either scalar values, or tables consisting of columns and rows of data;

Predicates, which specify conditions that can be evaluated to SQL three-valued logic (true/false/unknown) or boolean truth values and are used to limit the effects of statements and queries, or to change program flow;

Queries, which retrieve the data based on specific criteria. This is a very important element of SQL;

Statements, which may have a persistent effect on schema and data, or may control transactions, program flow, connections, sessions or diagnostics;

A query includes a list of columns to include in the final result, immediately following the select keywork. An asterisk can be also used to specify that the query should return all columns of the queried tables. Select is the most complex statement in SQL, with optional keyworks and claused that include:

The From clause, which indicates hte table from which the data is to be retrived. The from clause can include optional join subclauses to specify the rules for joining multiple tables;

The Where clause includes a comparison predicate, which restricts the rows returned by the query The where clause eliminates all rows from the result set for which the comparison predicate does not evaluate to True;

The group by clause is used to project rows having common values into a smaller set of rows. Group by is often used in conjuction with SQL aggregation functions or to eliminate duplicate rows from a result set. The where clause is applied before the group by clause;

The having clause includes a predicate used to filter rows resulting from the group by clause. Because it acts on the results of the Group by clause, aggregation functions can be used in the having clause predicate;

The order by clause identifies which columns are used to sort the resulting data, and in which direction they should be sorted, having two options ascdending or descending. Without an order by clause, the order of rows returned by an SQL query is undefined;

Queries can be nested so that the results of one query can be used in another query via a relational operator or aggregation function. A nested query is also known as a subquery. While joins and other table operations provide computationally superiod alternatives in many cases, the use of subqueries introduces a hierarchy in execution that can be useful or necessary, depending on each situation.

A subquery can use values from the outer query in which case is know as a correlated subquery, query that uses values from outer query. The subquery is evaluated once for each row processed by the outer query.

Correlated subqueries may appear anywhere, not only in the where clause. Those can be used fine in the select clause.

Each column in SQL table declares the type that column may contain. Mainly SQL supports the following data types :

Char(n) – fixed width character string

Varchar (n) – variable width string with a maximum size of n characters

Nchar (n) – fixed width string supporting an international character set

Nvarchar(n) – variable width nchar string

Integer, smallint and bigint for integer numeric declaration

Float, real and double for fractional numeric declaration

Numeric – for general numeric declaration

3.7 New features and updates

To get the platform continuous up to date, releases are scheduled twice a year, including bug fixes and enhancements, having the sole purpose to include new functionalities, development to existing functionalities and insuring that the platform is keeping track with the new technology.

OpenERP has brought significant improvements in the latest release, OpenERP 7. By adding new features aimed to ensure a user friendly interface, introducing search bars, feeds flow for administrators and process controls, thus insuring a better workflow within the system.

Figure New search bar available starting from OpenERP 7

Compared to previous versions, with OpenERP 7 the module configuration has been made very easy to implement. Furthermore, dashboards can be easily customized and reports are now displayed in the same window.

OpenERP has an entire development team that are working and trying to make the software more and more powerful. In the next few months is expected to get released a new OpenERP version. Version 8 will have some notable new impressing features like : business intelligence report, improved chart views, website builder, eCommerce integration and complete Point Of Sale setup.

4 Experimental results

4.1 Correct invoice date

Four invoices were booked by mistake on the wrong period. When creating the customer invoices the user wrongly completed the invoice date. All those invoices should had been booked on year 2014 not 2013.

Figure List of invoices booked on wrong year

The correct Invoice Date for those transactions is :

Invoice SAJ/2014/0037 should have invoice date set to 01/29/2014

Invoice SAJ/2014/0038 should have invoice date set to 03/10/2014

Invoice SAJ/2014/0039 should have invoice date set to 04/01/2014

Invoice SAJ/2014/0040 should have invoice date set to 04/28/2014

For security reasons, OpenERP application is build so that after an invoice is validated, cannot be edited via front end. Although the Edit button is available on invoice, this doesn`t allow you to edit any information. As any open source software the code is available and can be edited.

From an accounting perspective there exist two valid posibilities to fix those invoices:

Refund the invoice, which basicly mean creating a similar invoice but with negative amount which will balance the wrongly created invoices; OpenERP give three methods to Refund an invoice;

Applying a back end fix, log into back end and using the update function update the respective invoices;

4.1.1 Refund invoice

Will apply the first fix, refund the invoice and recreate it correctly, to the first two invoices, SAJ/2014/0037 and Invoice SAJ/2014/0038.

In order to Refund an invoice, when reviewing it, the Refund button available in the top left corner need to be used. After clicking on the Refund button a separate window will be opened. Refund functionality offers three methods to Refund an invoice: Create a draft refund which will create an credit note that can later be edited and validated; second method, Cancel:create refund and reconcile will create a credit note invoice that will be automaticaly validated and reconciled with the invoice, so it will not be editable; the last method is Modify: create refund, reconcile and create a new draft invoice, which will create the credit note, validate and reconcile with the current invoice and a new draft, invoice, will be created so that the user can edit it before validating. Selecting one of the above mentioned methods on the Refund Invoice window is mandatory. Beside the Refund Method also a reason why the invoice is refunded should be input.

Figure : Refund Invoice window

After completing the corresponding information, the refund invoice will be created by clicking on the Create Refund button.

Having the refund created and validated, from an accounting perspective the invoice that was created with the wrong Invoice Date can be considered canceled. Now the next step is to recreate the original invoice with the correct Invoice Date. Created invoice SAJ/2014/0069 with the correct invoice date.

Figure Correct Invoice Created

4.1.2 Correction using back end update

In order to correct the invoice month on the wrongly created invoices first we need to log into PostgreSQL and connect to the database that contains the invoices with the issue. After connecting to the database we need to identify in which table and which column should be updated. In back end invoices are stored in account_invoice table. In order to indentify exactly which invoices need to be updated used the following SQL query: ”select id, number, date_due, date_invoice, amount_total from account_invoice where number in ('SAJ/2014/0039', 'SAJ/2014/0030')”, as we can see in the following image.

Figure: query used to identify the transactions that need to be updated

In order to update the transactions the ”update” SQL function need to be used. An SQL update statement changes the data stored in one or more columns in a table. Usually the update statement is used in the following form : UPDATE table_name SET column_name = value WHERE condition.

In order to fix the invoices i used the following query: “update account_invoice set date_due = '2014-04-30', date_invoice = '2014-04-30' where number in ('SAJ/2014/0039', 'SAJ/2014/0030')”; query that will update both date_invoice and date_due columns to the right value.

Figure : executed the updated query to fix the invoices

If we use the select statement previously ran to review once again the date_due and date_invoice, we can observe that the columns are updated.

Figure: review invoices data after the update was executed

If we go back to front end to review the payments we can observe that the invoices look fine now. The date has been updated correctly.

The SQL update changes the data of one or more records in a table. By executing only one time, either all the rows can be updated or only a subset may be chosen using a where clause. Once executed an update, the data function cannot be rolledback only if a begin tran function was executed before the update. For this reason the update, and delete function which acts similar with the update function, should be used only by users that got well knowledge of the SQL programming language.

Figure: Invoice having corrected Invoice Date

Using this way any data can be updated, but should be used only when is really necessary, in order to avoid future errors.

4.2 Edit/delete a field from a view

Having the following Customer Form:

Figure Original Customer Form

If for example the user never used the Fax field, and would like to get rid of it so the form will be easier to read.

The field can be deleted by using the Edit FormView option, which is available only for administrator or user that are marked as having Technical Features. By accessing the Edit FormView option the Customer view can be edited according to user needs.

When accessing this functionality, a new window will be opened, window that contains the source code of the form, code that is editable. After editing the code, it need to be saved and after refreshing the page the changes can be noticed. Changed the code so the Fax field is no longer displayed.

Saved and refreshed the page so the change will be visible.

Figure Customer view after editing

As we can observe in the above print screen the Fax field is no longer displayed.

4.3 Edit a report

Using OpenERP, basicly there exist six ways to edit a report.

First option is Reportlab which means that the RML files will be ran through a wizard or report action. This is the original way of creating reports in OpenERP.

Second option is by using OpenOffice Report Designer, an extension to the RML Reportlab options, described above. The user need to use OpenOffice to create the report and save it directly in OpenERP as report actions. This option is the current accepted method for creating reports by OpenERP.

Third option is by using the Aeroo report module. This uses an openOffice server and the user can use OpenOffice documents as templates. This gives users a high flexibility in output and design, allowing output to pdf, odt, xls and others.

Fourth option is Webkit which uses a HTML file as template and can be combined with python code. This gives user a lot of flexibility, but because it is HTML there can exist issues with multi page reports.

Fifth option is represented by the Pentaho Report Designer, which requires a java-pentaho reporting server, java-pentaho reporting designer and some OpenERP addons. The Pentaho Report Designer is a real business object like report designer that contains almost all necessary needs for creating reports from OpenERP. As presented above, Pentaho Report Designer has three main components, the pentaho report server, which renders the report and returns the result to the OpenERP server, an OpenERP module which creates Pentaho Report Actions, and interaction with the report server and the Pentaho Report Designer, which is a standalone java application.

Sixth option is Jasper Report Server which works similar as Pentaho Report Designer, also is a java based reporting tool.

For my testing scenario i edited a report using the second option. In order to edit a report I first installed OpenOffice.org and then the OpenOffice Report designer.

Because editing the reports require some specific programming knowledge in order to avoid data issues and errors is not recommendet for the users to edit reports.

Having all the necessary setup done I opened OpenOffice, from the OpenERP Report Designer menu, selected the Server Parameters option which will help me connect to the corresponding database.

Figure Server Connection Parameter

Having the fields correctly completed pressing connect a new window will pop up, window that will state if the connection was correctly established or not.

Figure Window informing that the connection was correctly established

Having the connection to the database done, I can now either create a new report or edit an existing one. I choosed to edit and existing report by selecting from OpenOffice, OpenERP Report Designer menu, the Edit an Existing Report option. By selecting this option a new window opened, where is displayed a list with all existing reports that can be edited.

Figure List of available reports, that can be edited

For my teting I selected the Trial Balance report. A new window was opened with all the fields from the report. The fields can be edited as per user request. Also new fields can be added. In order to add changes to a report, technical skills are required for the user.

Figure Trial Ballance template, fields and code

For this scenario I deleted some blank space that was displayed under the title, also under the report header. Beside this because in my scenario all the transactions were done in currency Euro, I deleted the currency symbol that is displayed after each balance amount, so there report will be easier to read.

After i finished editing the report to correspond my needs, saved the report file, then using the Send Report to Server option from OpenOffice sent the edited report to server. The Send Report to Server option allows user to change the name of the report and also the report type, which give three options : pdf, OpenOffice or xml. Also a custom header can be set for the report, custom header that can be created according to user needs.

Figure: Window open when sending the edited report to server

The report will be sent to server by clicking the Send Report to Server button in the above image.

Figure Trial Balance Report before editing

Ran the report after sent the edited file to server.

Figure: Trial Balance Report after editing

As expected the blank space is no longer displayed and also the currency symbol is no longer displayed on the balance amount.

6 Conclusions

The goal of this bachelor thesis was to study the importance of software maintenance. For this study I choosed an open source Enterprise Resource Planning software, that has several modules that can be installed and customized, named OpenERP. A great impact in my decision to use OpenERP software for this study was the complexity and multitude of modules that can be installed, which implies great customization.

The scenario I created for this study was a Car Rental company. A great help to realize this was the Fleet Management module which I installed. The Fleet Management module allows users to add vehicles, contracts, fuel logs, services logs and other vehicle costs.

For my testings I simulated the situation that the owner has 10 rental cars. When a customer will rent a car, an contract will be created, contract that will link the customer to the car. Beside the customer and car, also the rental period and activation cost are mandatory fields. Each contract has an Odometer field that should be filled with the current value. Afther the contract expires and car is returned an invoice will be raised upong the contracted created. When the customer will pay the invoice, an payment will be raised according to the invoice, and invoice status will be updated to paid.

In order to show the importance of maintenance I created three scenarios where the user requested customization.

First scenario implies corrective maintenance and represents the situation when wrong invoices are created and validated. After an invoices is validated it can no longer be edited via front end. Although this can be fixed from an accounting point of view by creating a negative invoice for same tenant which will cancel the wrongly created invoice, then the original invoice need to be recreated. This is time consuming for the user, because there are many steps that need to be followed and errors can occur. However the wrongly created invoice can be fixed by logging in back end using PostgreSQL program. Using PostgreSQL users can connect to the database and using the SQL programming language date can be corrected. Because usually the user doesn`t have any programming knowledge, is good to have someone that can do the correction for you, and that person is the person who is in change with the maintenance. This is a great advantage because the person in charge with the maintenance will be directly responsible if something goes wrong, and update can be wrongly executed, in which case data issues can occur and even front end errors can be displayed.

The second scenario that I created in order to bring out the importance of maintenance is the request of a user to add or delete fields on a form. Because everyone organizes his work in a different way, is good to have someone that can create the pages to fit users needs. In my scenario I deleted the Fax field from customer page. I deleted this field because fax is not so important and is not used. By having only the fields that are need on a form, the application becomes alot more user friendly.

The third scenario I created is related to reporting. Often users will request custom reports because they need to review balances in different ways and also need to report their financial statements. Reporting is very important and usually has a big influence when signing a maintenance contract because the accouting reporting is different in each country. Although OpenERP comes with several reports and some modules that are customized based on country specific accounting rules, each user has its own needs and in order to improve performance some custom reports can be required. Custom reports are also welcomed in situations when users use beside the main front end application some auxiliary programs like Microsoft Excel in order to manupulate the data.

In conclusion, maintenance is very important in order to perform all changes, insertions, deletion, modifications, extensions and enhancements to a system to meet the evolving and expanding needs of the users of the respective software. Maintenance usually comes hand in and with increased performance.

Similar Posts