Hello Febian,
I was in Adempiere long before I change to Odoo 3 years back. I saw your questions in iDempiere forum. It is the things I used to ask also in Odoo forums. But most of the time points are not understood by Odoo people.
I will answer on behalf of Adempeire only since I was there before the split, and never have chance to dive in to the new stuff of iDempiere. As your questions are not on the surface, Adempiere and iDempiere database structure are the same and I think they still do now.
Please note that, there are also things that Odoo excels at. But I think not what you want to discuss. So, for the good of Odoo, here you go!
Frankly speaking, when my team first switch to Odoo, my accountant (a CPA) can not accept how Odoo accounting works. Per her quote, she said Odoo is not an ERP, it is just accounting software disguised with business processes automation.
But given Odoo market potential, user friendliness and technology so we finally switch at the end. There are many point I love about Odoo, i..e, ease of development, breath of features, modularity, communities, etc. But still I agreed up to today that, structure of Adempiere seem to be more of what the big organization would need.
Document Type in Adempiere
Adempiere is real "Document Type" based ERP, while Odoo is Accounting Book (Journal) based ERP.
To start with, Adempiere has a dedicated window that allow user to set up around ~80 account code that would cover every kind of business scenarios.
So, in any transaction windows, there will be no Accounting Book (Journal) to choose like Odoo, but rather the "Document Type". For example, in an Invoice window, it could be Invoice / Credit Note / Debit Note / Performa Invoice, etc.
It works like this,
- Post a Document Transaction + Accounting Engine (by doctype + default accounts) = Account Posting (Dr/Cr)
Adempiere do have a seriously maintained Accounting Engine (dedicated classes separated from other models).
Given it has Accounting Engine between Document Transaction and resulting Account Posting, gives it a lot of flexibility to different business scenario. In fact, it doesn't care what Window/Model you are working on, as soon as the Document Type is chosen, and enough data supplied, it returns correct account posting.
While Odoo is using Journal, and the account_move_create() logic is right into the working model. Odoo also try to handle some complexity of business by using what we call Fiscal Position. It works in some case, but not solid nor beautiful in my opinion. Using Document Type also gives better control of the document sequence too (as per Document Type not to journal or book bank).
In a summary,
- Adempiere, once the default accounts are properly configured, we rest assured that all the Dr/Cr will be fine.
- Odoo, our accountant have to test and test in every business scenarios windows by windows. Cases we have to add more journal or fiscal positions or tweak the code, etc.
Account Engine is really big deal in Adempiere. All reports will rely on account moves only (which is correct). There is also no concept of deleting account move when cancelled like in Odoo (my accountant almost heart attacked on that :P). The deletion of account move make problem when running reports on against move lines, as some important data is already missing.
Moreover, in Adempiere, you can even configure system to write move lines from PO/SO commitment !!!. It may seem unnecessary as SO does not require account move, but it proof to be good for reporting purposes. For example, budget reservation from PR, PO, without it, I have to join document tables, instead of everything in account moves.
In summary of all the summary. account move lines in Adempiere is really a single source of truth. It is done the same way as SAP.
Multi-Organization, Security.
Actually, I think security in Odoo (group, rules) is more comprehensive to me, easier to configure and understand. But what I think is good about Adempeire is again, on its table structure.
In Adempiere, record level security will be based on, Client (company) and Org (department). They are role as group, and similar to Odoo. For system admin, Client = System and Org = * (means all). For users, Client = <company> and Org = * or <department>.
In every database table, there will be 2 fields. Client_ID and Org_ID. And they are serious fields. Model can't be created without them. It also very strict on the naming convention. Only exact word "Client_ID" and "Org_ID" can be used. May2one fields must end with "_ID" only otherwise exception will be thrown, etc... there are many of them like this.
In my opinion, the strictness of table and column name is the key to stable system. In Odoo, there are good chances that people create table without "company_id". In other words, it is doubtful that extra addons are written correctly in respect of multi-company. In Adempiere, bad naming or missing of important column is just not possible.
Yes, they are very rigid, and not as flexible as Odoo. You can almost say, it is old fashioned ERP too by Odoo standard. But still, something is good in its old fashioned I think :)
Detail Oriented
Way of Coding of Adempiere is also detailed oriented. While in Odoo tends to things simple and shortcuts. For example, in Invoices, Odoo will have Tax Table that already group same taxes together in 1 line. Adempiere will keep all tax in detail. It is just example, Adempiere do things in detail oriented everywhere.
On the surface, it might seem that Adempiere is keeping too much of unused data. But I proof it very useful when I develop things like Withholding Tax (localization) on top of the detailed data with much more ease then when I try to do the same in Odoo, and still error prone.
Another things like dedicated Accounting Dimension. If you notice on the accounting field here, Adempiere prepare arbitrary dimensions to be configured as _-_-_-_
In Odoo, it is Analytic and for multi you recommend multi axis something I can't remember the name :).
But for really big project, they are not very useful. There are one project, I tried hard to use multi-analytic. But at the end, I still have to create new real dimensions as it is much needed for the real life scenarios.
----
Well those are just my opinion based on years of working with both software, by no mean expert of any. So, please feel free to correct me in any points, things are evolving fast that I couldn't catch up. :)
I hope the open comment will be useful to some. Both Adempiere/iDempiere and Odoo are best things happening to my life I can really say.
Thanks to you all you who make things happen!
Kitti U.