This blog talks about OpenERP, an OpenERP business application trying to manage an enterprise in an easier and powerful. I will try to explain how difficult it is to develop with OpenERP due to the bugs and the database model made by Tiny. Because I'm impartial I will also explain some good features.
Friday, December 31, 2010
OpenERP Hate from the web
http://goo.gl/3yZOF
Friday, December 10, 2010
Tryton vs OpenERP: From internet Part 1
We made the change a while ago. I took a lot of work. Spare yourself this trouble. Go Tryton!
From Pim Vergalen on http://stackoverflow.com/questions/2580512/building-a-financial-app-with-django
Wednesday, November 24, 2010
Annoying bug: XML/RPC should return integer faultcodes
OpenERP doesn't respect the XML-RPC standards, returning a string as faultcodes, this breaks a lot of Java applications integrations according to the bug.
Changed in openobject-server: | |
importance: | High → Wishlist |
milestone: | 6.0 → none |
Tuesday, November 9, 2010
The OpenERP effect: Richard's Success, are you kidding?
Just take a look,
First, when you integrate a new application in a company, employees are happy if it is like before but faster but changing nothing in OpenERP because the slides don't talk about developments then employees are totally unhappy if you are using standards OpenERP views. They don't want to change they way they work.
If you integrate OpenERP like in the slide 26, you need to have a bridge with the other applications (then there is a cost)
BI module? Where do you have a nice BI module in OpenERP? This is just an unfinished buggy module
Can you do in OpenERP what you do with Outlook? Where? Why does OpenERP creates an Outlook plugin then?
Replacing Isabel? How?
These slides are just commercial but not showing real life, just post your comments about them...
From Twitter: about OpenERP license issues with Fedora
and one more license issue for #openerp with #pyPDF http://goo.gl/AvGql
http://twitter.com/#!/cedrickrier
Tuesday, October 26, 2010
Tryton vs OpenERP: Which is the best? Better modules or more modules?
I post the difference between Tryton and OpenERP, simply because I'm looking at Tryton for the moment to see how different it is from OpenERP and if it is better coded and easier for developers. Well for the moment I'm really surprised by the excellent quality of the code. Here is a VS sheet coming from Wikipedia.
Subject | Tryton | OpenERP |
---|---|---|
Language | Python (>=2.4) | Python (>=2.4) for 5 Series[1], Python (>=2.5) for 6 Series |
Versions maintained | 2 years | 5.X.X Series to 6.X.X Series |
Release cycle | every 6 months | when it's stable |
Version Policy | No API changes in Series, No XML Change in Series | No API changes in stable versions |
Number of Modules | 50 | > 500 |
Repository Organisation | 1 Repo per Module | 1 Repo for official modules |
Version Control System | Mercurial (HG) | Bazaar (BZR), hosted on Launchpad.net |
Active contributors (commits in May 2010) | 40 | 245 |
Automatic Upgrades/Migrations | Yes | Yes for minor versions |
Python Packaging | Available on PyPi[2] | Not Available on PyPi |
Python Module | Can be used as a module[3] | not |
Distribution Package | Debian, Gentoo, Ubuntu, Arch Linux, Foresight Linux, Windows (only client), MacOS X (only client) | Available |
Code Auto-Reload | Available | Not Available |
Architecture | Three Tier | Three Tier |
Database Supported | PostgreSQL, MySQL, SQLite | PostgreSQL |
Desktop Clients | GTK Based Desktop Client | GTK Based Desktop Client KDE/QT Client(Community) |
Web based Clients | SAO based on Google Web Toolkit (Work in progress) | OpenObject-client-Web based on CherryPy, Mako and Mochikit (replaced by JQuery in v6) |
Client Access Libraries | Proteus | Not Available |
Standalone Clients | Neso | None |
Native Gantt Charts | Not Available | Available only in web client |
Native Calendar View | Through CalDAV | Available |
Native Diagram View | Not Available | Available in v6 |
Reporting Engines | Relatorio based Openoffice WYSIWYG reports [4] or any custom | RML (official)/Relatorio (on Open Office. Community), Jasper(Community), MAKO(work in progress) |
Native Bar/Pie Chart View | Available (with drill down) | Available |
Dashboard View | Available (customizable) | Available |
CalDAV | Available | Available in series 6.X.X |
WebDAV | Available | Available in series 6.X.X |
Cardav[5] | Available | Not Available |
Unit testing | Covers Server & All modules | Covers modules & reports |
Functional Testing | Proteus (Work in Progress) and in unit test | YAML Based Tests in series 6.X.X,Open ERP Scenario (Community Project/Unofficial) [6] |
Client Multi Language Programming Compatibility | Possible by use of Pyson Syntax [7] | Not available due to pythonic expressions. |
IP v6 Compatibility | Yes | No |
Historization | Yes[8] | No |
Localization | 5 | more than 20 languages, integrated with Launchpad.net |
Business model
Subject | Tryton | OpenERP |
---|---|---|
Editor | Community [4] | Open ERP SA [5] |
Project type | Community Open source [9] | Commercial Open Source [10] |
Professional Service Providers | Available | Available |
Partnership Eligibility | Merits & Contribution to project | Buying Partner Contract |
Software License | GNU General Public License[11] | Server: GNU General Public License [12] |
Functionality
Subject | Tryton | OpenERP |
---|---|---|
Accounting & Financial Management | Yes | Yes (Severely limited) |
Document Management System | Yes (document size limit: Filesystem limit) | Yes (document size limit: PostgreSQL 1GB) |
Analytic accounting | Yes | Yes |
Payroll Management | No | Yes |
Portals | Yes | Yes |
Sales Management | Yes | Yes |
Warehouse Management | Yes | Yes |
Project Management | Yes | Yes |
Purchase Management | Yes | Yes |
Manufacturing Management | In Development [17] | Yes |
Human Resources | Yes | Yes |
CRM | Basics | Yes |
Point of Sale | No | No (Fast encoding screen available [18]) |
E-commerce | ? | Integration Magento, Prestashop, ... |
Concepts and approach
Subject | Tryton | OpenERP |
---|---|---|
Accounting | Uses Decimal [14] | Uses Floats [15] |
Password Storage | Crypted with SHA1 | In clear text |
Code review | For all commits through Rietveld[16] | Almost none |
float/integer representation | Limited to float or long because using gtk.Entry without limit | Limited to sys.maxint of Python because using gtk.SpinButton |
Reference: http://en.wikipedia.org/wiki/Comparison_of_Tryton_and_Open_ERP
Friday, October 22, 2010
OpenERP on_change: bunch of parameters vs dictionaries
uom=False, qty_uos=0, uos=False, name='', partner_id=False,
lang=False, update_tax=True, date_order=False):
res = self.product_id_change(cursor, user, ids, pricelist, product,
qty=qty, uom=uom, qty_uos=qty_uos, uos=uos, name=name,
partner_id=partner_id, lang=lang, update_tax=update_tax,
date_order=date_order)
if 'product_uom' in res['value']:
del res['value']['product_uom']
if not uom:
res['value']['price_unit'] = 0.0
return res
Look at this on_change, 15 parameters and calling another one with 14 parameters. This is too much, a good idea will be to use dictionaries:
Monday, October 18, 2010
Fabien Pinckaers: OpenERP v6, new logging system for end-users
http://bazaar.launchpad.net/~openerp/openobject-server/trunk/annotate/head:/bin/addons/base/res/res_log.py
_name = 'res.log'
_columns = {
'name': fields.char('Message', size=128, help='The logging message.', required=True),
'user_id': fields.many2one('res.users','User', required=True),
'res_model': fields.char('Object', size=128),
'context': fields.char('Context', size=250),
'res_id': fields.integer('Object ID'),
'secondary': fields.boolean('Secondary Log', help='Do not display this log if it belongs to the same object the user is working on'),
'create_date': fields.datetime('Created Date', readonly=True),
'read': fields.boolean('Read', help="If this log item has been read, get() should not send it to the client")
}
_defaults = {
'user_id': lambda self,cr,uid,ctx: uid,
'context': "{}",
'read': False
}
_order='create_date desc'
def get(self, cr, uid, context=None):
unread_log_ids = self.search(cr, uid,
[('user_id','=',uid), ('read', '=', False)], context=context)
...
self.write(cr, uid, unread_log_ids, {'read': True}, context=context)
return result
Imagine 2 users (Mr Smith and Mr West) using the same user. The first connected will see all the unread messages and the other no messages...
Friday, October 15, 2010
base_contact module, heaven or hell?
Good reading for the CEO of OpenERP:
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470178450,descCd-description.html
Interview with The OpenERP Developer
Age: ?? Located in: ?? Occupation: OpenERP Consultant Tweet: openerphell |
Tell us about about yourself:
Tell us about about you and OpenERP
- An animal (except an ant of course): The naked mole rat
- A color: Red (it matches the invisible required fields)
- A Dish : Black pudding
- A Song: OpenERP deserves an album of its own “Rage against the machine"
Just kidding...
Thursday, October 14, 2010
Caldav in V6, the truth...
Looking at the OpenERP documentation about CalDav, you can see this:
Code obfuscation
dict = {}
for object in result:
k2 = {}
for id,fnct in result[object].items():
k2.setdefault(tuple(fnct), [])
k2[tuple(fnct)].append(id)
for fnct,id in k2.items():
dict.setdefault(fncts[fnct[0]][4],[])
dict[fncts[fnct[0]][4]].append((fncts[fnct[0]][4],object,id,map(lambda x: fncts[x][1], fnct)))
http://bazaar.launchpad.net/~openerp/openobject-server/trunk/annotate/head:/bin/osv/orm.py#L3777
Code obfuscation...
Wednesday, October 13, 2010
Projects in OpenERP V5 Part 2
Projects in OpenERP V5 Part 1
class project_work(osv.osv):
_name = "project.task.work"
_description = "Task Work"
_columns = {
'name': fields.char('Work summary', size=128),
'date': fields.datetime('Date'),
'task_id': fields.many2one('project.task', 'Task', ondelete='cascade', required=True),
'hours': fields.float('Time Spent'),
'user_id': fields.many2one('res.users', 'Done by', required=True),
}
...
In this code, you can see that in the project work you have a user_id but It will be more interesting to link the employee (from the hr module).
Here is the problem:
You have a company with a lot of external consultants, you don't want them as users but you need to encode the time spent by these external consultants on your project to invoice your customer...
Balsamiq VS Pencil, how to make mockups for OpenERP?
http://twitter.com/cedrickrier/status/27222698542
Like cedrickrier said Pencil is an OpenSource free alternative to Balsamiq but when you need to make simple mockups (just adding some fields for example), just use paint or gimp...
But for specific forms, it can be a good idea to use Pencil or Balsamiq...
I will post some mockups later... Stay connected...
OpenERP Webinar 1/5 Part 2
Fabien showed an auto-completion for every many2one fields in OpenERP but as always in the demo there were only few records but how is the many2one showing the auto-completion with 10000 records starting by a when typing the letter a in the many2one. Querying 10000 records in the database?
After asking this a few times, I had no answers then I simply suppose that he never tested it...
After this second question, I simply quit the Webinar because he was only answering to some questions and the difficult ones, just skipping them...
Tuesday, October 12, 2010
OpenERP Webinar 1/5 Part 1
How was the first Webinar of OpenERP for version 6. Well, as usual Fabien Pinckaers goes fast into the menus (maybe scared about bugs).
During the questions session, I've tried to ask some questions to Fabien.
My first question: The calendar view in the GTK client is still limited to the number of records.
For example, imagine a customer with 2000 records in the calendar, he saw only the 80 first or 100 first in version 6. To see every records you need to remove the limit but then the system is so slow.
I've asked my questions 3 times without answer and then I was obliged to do a kind of spamming to have an answer.
The answer: The calendar in version 6 is still the same...
My opinion: Then if you want a real calendar use oultook...
My next question of the webinar 1/5 in my next post.
First message
This blog will try to explain how it is to develop with OpenERP.
My blog is named OpenERP Developer's Hell because sometimes it is very unpleasant to develop with OpenERP but I will also blog about good features in OpenERP.