You are on page 1of 42

Development

Odoo Basic
by @mario21ic

Agenda

Introduccin
Configuracin de mdulos
Creacin de un mdulo
Definicin de menu, action, vista
Fundamentos bsicos de objetos
Vistas bussiness document

Qu es?

ERP + CMS
MVC
OpenObject
Python
PostgreSQL
Flexible
OpenSource

Arquitectura

Modelo MVC
Model: todo_model.py
View: todo_view.xml
Controller: ORM y mtodos

Instalacin - Paquetera
Debian/Ubuntu derivados:
Descargar de:
http://nightly.odoo.com/8.0/nightly/deb/odoo_8.0.latest_all.deb
$ sudo dpkg i odoo*.deb
$ sudo apt-get install -f
RedHat/CentOS/Fedora derivados:
Descargar de:
http://nightly.odoo.com/8.0/nightly/rpm/odoo_8.0.latest.noarch.rpm
$ sudo rpm Uvh odoo*.rpm

Instalacin - Docker
PostgreSQL:
$ docker run -d -e POSTGRES_USER=odoo -e
POSTGRES_PASSWORD=odoo --name db postgres

Odoo:
$ docker run -p 127.0.0.1:8069:8069 --name odoo --link db:db t odoo

Acciones:
$ docker stop|start|restart odoo

Instalacin - Docker-compose
Crear archivo:
docker-compose.yml

Luego ejecutar:
$ docker-compose up

web:
image: odoo:8
volumes:
- ./todo_app:/mnt/extra-addons/todo_app
links:
- db
ports:
- "8069:8069"
db:
image: postgres:latest
environment:
POSTGRES_USER: odoo
POSTGRES_PASSWORD: odoo

Creating database

Quick tour

Technical features

Technical features

Estructura de un mdulo
nombre_modulo/
security/
ir.model.access.csv
i18n/
es_PE.po
submodulo/
__init__.py
submodulo.py
modulo_view.xml
modulo.py
__init__.py
__openerp__.py

__openerp__.py
{
'name': 'To-Do Application',
'description': 'Maneja tus tareas personales',
'author': 'taller',
'depends': [mail'],
'application': True,
}
https://www.odoo.com/documentation/8.0/reference/module.html

Actualizando lista de mdulos

Instalando module

Modelo: todo_model.py
# -*- coding: utf-8 -*from openerp import models, fields
class TodoTask(models.Model):
_name = 'todo.task'
name = fields.Char('Description', required=True)
is_done = fields.Boolean('Done?')
active = fields.Boolean('Active?', default=True)

Importando model
Archivo __init__.py:
from . import todo_model

Actualizando module

Campos predefinidos

id
create_date
create_uid
write_date
write_uid

View - Structure
Archivo todo_view.xml:
<?xml version="1.0"?>
<openerp>
<data>
<!-- Data -->
</data>
</openerp>

View - Action
Agregamos action:
<!-- Action to open To-do Task list -->
<act_window id="action_todo_task" name="Todo Task" res_model="todo.task"
view_mode="tree,form" />

View - Menu
Agregamos menu:
<!-- Menu item to open To-do Task list -->
<menuitem id="menu_todo_task" name="ToDo Tasks" parent="mail.mail_feeds"
sequence="20" action="action_todo_task" />

Activando todo_view.xml
Agregar en __openerp__.py
data': ['todo_view.xml'],

Vista - Tree

Vista - Form

Vista - Form personalizada


Agregar el siguiente record:
<record id="view_form_todo_task" model="ir.ui.view>
<field name="name">To-do Task Form</field>
<field name="model">todo.task</field>
<field name="arch" type="xml">
<form string="To-do Task>
<field name="name"/>
<field name="is_done"/>
<field name="active" readonly="1"/>
</form>
</field>
</record>

Vista - Form personalizada


Actualizar module y crear:

Vista - Bussines document


<form>
<header>
<!-- Buttons go here -->
</header>
<sheet>
<!-- Content goes here -->
<field name="name"/>
<field name="is_done"/>
</sheet>
</form>

Vista - Buttons
Agregar:
<header>
<button name="do_toggle_done" type="object"
string="Toggle Done" class="oe_highlight" />
<button name="do_clear_done" type="object"
string="Clear All Done" />
</header>

Vista - Grupos
<sheet>
<group name="group_top>
<group name="group_left>
<field name="name"/>
</group>
<group name="group_right>
<field name="is_done"/>
<field name="active" readonly="1"/>
</group>
</group>
</sheet>

Vista - Bussines document


Actualizar module y crear:

Vista - List
<record id="view_tree_todo_task" model="ir.ui.view>
<field name="name">To-do Task Tree</field>
<field name="model">todo.task</field>
<field name="arch" type="xml>
<tree colors="gray:is_done==True>
<field name="name"/>
<field name="is_done"/>
</tree>
</field>
</record>

Vista - List
Actualizar y ver:

Vista - Search
<record id="view_filter_todo_task" model="ir.ui.view>
<field name="name">To-do Task Filter</field>
<field name="model">todo.task</field>
<field name="arch" type="xml>
<search>
<field name="name"/>
<filter string="Not Done" domain="[('is_done','=',False)]"/>
<filter string="Done" domain="[('is_done','!=',False)]"/>
</search>
</field>
</record>

Vista - Search
Actualizar y buscar:

Agregando lgicade negocio


Agregar al inicio de todo_model.py
from openerp import models, fields, api
Y como mtodo:
@api.one
def do_toggle_done(self):
self.is_done = not self.is_done
return True

Agregando lgica de negocio


@api.multi
def do_clear_done(self):
done_recs = self.search([('is_done', '=', True)])
done_recs.write({'active': False})
return True

Field - Tipos bsicos

Char
Boolean
Integer
Float
Text
Selection
Date / Datetime
* Computed

Mas info:
https://www.odoo.com/documentation/8.0/reference/orm.html#fields

Field - Agregando un Selection


En todo_model.py agregar:
level = fields.Selection((
('0', 'Urgente'), ('1','Alto'), ('2', 'Normal')),
'Prioridad')
En todo_view.xml agregar en form y tree:
<field name="level"/>

Field - Selection
Actualizar module, listar y crear:

Ejercicios
Agregarle un campo de tipo fecha.
Al mdulo crearle un acceso desde el men
principal
Agregarle un campo tipo selection que sea
generado dinamicamente.

You might also like