Business processes are tricky. Robust apps are hard to build. Web frameworks are great to build the perfect front end, but not very helpful at tying all the pieces together in the backend. Get that out of the way: let the Odoo framework do the heavy lifting for you, and focus at excelling on your business idea.
2. Odoo Business Apps Platform
Introduction
Daniel Reis
twitter: @reis_pt
email: dgreis(at)sapo.pt
github.com/dreispt
• IT Applications at Securitas
• Board Member at the Odoo
Community Association
• Partner at ThinkOpen Solutions
• Author of a couple of Odoo
development books
3. Odoo Business Apps Platform
Agenda
➔ What is Odoo?
➔ Is it fit for me?
➔ How does it work?
➔ Wher can I learn more?
4. Odoo Business Apps Platform
Agenda
➔ What is Odoo?
➔ Is it fit for me?
➔ How does it work?
➔ Where can I learn more?
5. Odoo Business Apps Platform
Odoo is a flexible framework to build
Business Applications and Websites
Feature rich
Extensible
Open Source
Rapid Development
6. Odoo Business Apps Platform
Wide Scope with dozens of apps
provided out of the box
7. Odoo Business Apps Platform
Wide Scope with hundreds of community
apps and features available, free or paid
10. Odoo Business Apps Platform
Agenda
➔ What is Odoo?
➔ Is it fit for me?
➔ How does it work?
➔ Where can I learn more?
11. Odoo Business Apps Platform
Is it a good fit for me?
Framework Evaluation checklist
Key Selling Points
Tech stack
Licenses
Learning Curve
Project Governance
Community activity and health
Known road blocks and pitfalls
14. Odoo Business Apps Platform
Frameworks – the Good, the Bad, and the
UglyProductivity
Total Time Spent
Obstacle
"Honeymoon"
Learning
15. Odoo Business Apps Platform
Key Feature: Odoo is Extensible by
Design, using extension layers.
App behaviour is the composition of all extension
layers added by the Modules installed:
Models – extend data structures
Logic – extend business logic
Views – extend backend UI
Web Client – extend behaviour, add widgets, view types
Web Controllers – extend logic for web rendering
Web Templates – extend web HTML templates
16. Odoo Business Apps Platform
Learning Odoo – Quality documentation
is avalilable
17. Odoo Business Apps Platform
Learning Odoo – professional quality
books for beginners and experts
18. Odoo Business Apps Platform
Company Driven Open Source.
Two Editions: Community and Enterprise.
20. Odoo Business Apps Platform
State of the ecosystem
●
Driven by a for-profit company.
●
Enterprise edition = Community edition + Proprietary
advanced features.
●
Revenue come form Enterprise contracts, Online SaaS
offer, Parternship fees, App store sales.
●
Commercial friendly LGPL core, many AGPL and
Proprietary community modules.
●
Strong community leaded by the non-profit Odoo
Community Association.
21. Odoo Business Apps Platform
Pitfalls to be aware of
Produt evolution tightly controlled by the editor.
Editor does not provide free version migrations …
but Community maintains the OpenUpgrade
alternative.
22. Odoo Business Apps Platform
Agenda
➔ What is Odoo?
➔ Is it fit for me?
➔ How does it work?
➔ Where can I learn more?
23. Odoo Business Apps Platform
Logical Architecture Overview
ORM [Pyhon]
Models and Business Logic
Templates [XML]
HTML Pages &Snippets
Views [XML]
Menu, List, Form, ...
Web Controllers
Front End Pages
JSON RPC
XML RPC
Web Client
Back End UI
Other
JSON-RPC Clients
XML-RPC Clients
24.
25. Odoo Business Apps Platform
ORM: Adding Models and Business Logic
class TodoTask(models.Model):
_name = 'todo.task'
name = fields.Char('Title', required=True)
is_done = fields.Boolean('Done?')
@api.multi
def do_toggle_done(self):
for task in self:
task.is_done = not task.is_done
return True
26. Odoo Business Apps Platform
Backend Views: Designing Forms and
Lists
<form>
<header>
<button name="do_toggle_done" type="object"/>
</header>
<field name="name"/>
<field name="is_done"/>
<form>
<tree colors="gray: is_done==True">
<field name="name"/>
<field name="is_done"/>
</tree>
27. Odoo Business Apps Platform
Front End Controllers and Templates:
a simple "Hello World" example.
class Hello(http.Controller):
@http.route('/hello', auth='public')
def hello(self):
return http.request.render('my_addon.hello')
<template id="hello" name="Hello World">
<h1>Hello World!</h1>
</template>>
28. Odoo Business Apps Platform
ORM Extensions: adding features to
existing Models and Business Logic.
class TodoTaskExtend(models.Model):
_inherit = 'todo.task'
# add or modify fields:
is_done = fields.Boolean('Done?')
@api.one
def do_toggle_done(self):
# some code before...
res = super(TodoTask, self).do_toggle_done()
# some code after...
return res
29. Odoo Business Apps Platform
View Extensions: add features to
Backend View or Web Template XML
<xpath expr="//field['name']='is_done'"
position="before">
<field name="date_deadline" />
</xpath>>
<field name="is_done" position="before">
<field name="date_deadline" />
</field>
30. Odoo Business Apps Platform
Agenda
➔ What is Odoo?
➔ Is it fit for me?
➔ How does it work?
➔ Where can I learn more?
31. Odoo Business Apps Platform
Learning more about Odoo
www.odoo.com – the official website
apps.odoo.com – the app store
www.odoo.com/documentation – the docs
nightly.odoo.com – nightly builds .exe, .deb, .rpm
github.com/odoo/odoo – the source code
odoo-community.org – the OCA website
github.com/oca – the dozens of OCA repos
essentials.odoo.com – website for the Odoo Dev Essentials book
32. Odoo Business Apps Platform
Become a community contributor!
Code reviews are open to everyone.
Proposing code requires signing the OCA CLA.
Collaborating is an excellent way to learn from the
community experience developers.
33. Lisboa
Miraflores Office Center
Avenida das Tulipas, nº6, 13º A/B
1495-161 Algés
t: 808 455 255
e: sales@thinkopen.solutions
Porto
Rua do Espinheiro, nº 641
2,Escritório 2.3
4400-450 Vila Nova de Gaia
t: 808 455 255
e: sales@thinkopen.solutions
São Paulo
Av Paulista 1636,
São Paulo, SP
t: +55 (11) 957807759 / 50493125
e: info.br@tkobr.com
Luanda
Rua Dr. António Agostinho Neto 43
Bairro Operário, Luanda Angola
t: +244 923 510 491
e: comercial@thinkopensolutions.co.ao
Thank you! Questions?
Daniel Reis
twitter: @reis_pt
email: dgreis(at)sapo.pt
github.com/dreispt
www.thinkopen.solutions