SlideShare una empresa de Scribd logo
Development
Odoo Basic
by @mario21ic
Agenda
●  Introducción
●  Configuración de módulos
●  Creación de un módulo
●  Definición de menu, action, vista
●  Fundamentos básicos 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 métodos
●  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
Instalación - Paquetería
Instalación - 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
Instalación - Docker-compose
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
Luego ejecutar:
$ docker-compose up
Crear archivo:
docker-compose.yml
Creating database
Quick tour
Technical features
Technical features
Estructura de un módulo
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 módulos
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="To-
do 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="To-
Do 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 lógicade negocio
•  Agregar al inicio de todo_model.py
from openerp import models, fields, api
•  Y como método:
@api.one
def do_toggle_done(self):
self.is_done = not self.is_done
return True
Agregando lógica 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 básicos
•  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 módulo crearle un acceso desde el menú
principal
•  Agregarle un campo tipo selection que sea
generado dinamicamente.

Más contenido relacionado

KEY
Introducción a DJango
KEY
Introducción a Flask
PDF
De HTML a Express
DOCX
Primefaces hotel.. TERMINADO
PPT
Python django
PDF
jQuery Mobile :: Cuadros de diálogo
PDF
Web de noticias en Ajax
PPT
Angularjs Lógica de negocio
Introducción a DJango
Introducción a Flask
De HTML a Express
Primefaces hotel.. TERMINADO
Python django
jQuery Mobile :: Cuadros de diálogo
Web de noticias en Ajax
Angularjs Lógica de negocio

La actualidad más candente (11)

PDF
Php07 consultas bd
PPTX
Funciones
DOCX
Informe grupal f_arinango_ cuenca
PDF
Php05 funciones usuario
PDF
Php03 variables externas
PDF
Api De Google Calendar
PDF
Servlet Hola Mundo con Eclipse y Tomcat
PDF
Php06 instalacion my_sql
PDF
Php08 mantenimiento tablas
ODP
Presentacion
PDF
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
Php07 consultas bd
Funciones
Informe grupal f_arinango_ cuenca
Php05 funciones usuario
Php03 variables externas
Api De Google Calendar
Servlet Hola Mundo con Eclipse y Tomcat
Php06 instalacion my_sql
Php08 mantenimiento tablas
Presentacion
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
Publicidad

Destacado (9)

PPTX
Timesheet based payroll
PPTX
How to configure PyCharm for Odoo development in Windows?
PPTX
Odoo (OpenERP) - Creating a module
PPTX
Xml operations in odoo
PPTX
Widgets in odoo
PPTX
Odoo Web Services
PDF
Odoo - Create themes for website
PDF
User Manual For Crafito Odoo Theme
PDF
Odoo - Backend modules in v8
Timesheet based payroll
How to configure PyCharm for Odoo development in Windows?
Odoo (OpenERP) - Creating a module
Xml operations in odoo
Widgets in odoo
Odoo Web Services
Odoo - Create themes for website
User Manual For Crafito Odoo Theme
Odoo - Backend modules in v8
Publicidad

Similar a Development Odoo Basic (20)

PPTX
DIAPO CAP 12 ODOO CONVERTIRSE EN DESARROLLADOR.pptx
PDF
ODOO (2).pdf
PDF
Prueba-Velneo.pdf
PDF
DocOpenERP - Open erp tutorial_basico
PDF
Open ERP Doc-05-open_erp_tutorial_basico
PPT
DESARROLLO RAPIDO DE APLICACIONES WEB
PPTX
Taller desarrollo de apis
PPT
02 webinar gestion_expedientes_v0.6.1-intix
PDF
Node js mongo crud tareas
PPTX
JSDays Desarrolla tu primera API
PPTX
Mule softmeetupvalencia #06 cómo evolucionar de una api monolítica a orient...
PDF
PPTX
Diseño de Base de Datos Ragic 101
PPTX
PDF
Py Qt Desarrollando Aplicaciones De Escritorio El Co Di Go K
PPTX
Zoho projects app training
PPT
Abap presentacion-ALV_Orientado_a_Objetos.ppt
PDF
Open erp tutorial_basico
PDF
Open erp tutorial_basico
PDF
Open erp tutorial_basico
DIAPO CAP 12 ODOO CONVERTIRSE EN DESARROLLADOR.pptx
ODOO (2).pdf
Prueba-Velneo.pdf
DocOpenERP - Open erp tutorial_basico
Open ERP Doc-05-open_erp_tutorial_basico
DESARROLLO RAPIDO DE APLICACIONES WEB
Taller desarrollo de apis
02 webinar gestion_expedientes_v0.6.1-intix
Node js mongo crud tareas
JSDays Desarrolla tu primera API
Mule softmeetupvalencia #06 cómo evolucionar de una api monolítica a orient...
Diseño de Base de Datos Ragic 101
Py Qt Desarrollando Aplicaciones De Escritorio El Co Di Go K
Zoho projects app training
Abap presentacion-ALV_Orientado_a_Objetos.ppt
Open erp tutorial_basico
Open erp tutorial_basico
Open erp tutorial_basico

Más de Mario IC (20)

PDF
Testing Day Peru 2025 Introducción al testing en Infrastructure as Code
PDF
RAG en AWS llevando la IA Generativa al Siguiente Nivel
PPTX
Seguridad Digital un encuentro con la Criptografía de la mano de AWS KMS
PPTX
AWS Community Day Peru 2024 - Generative IA con AWS Bedrock + Langchain
PPTX
Pentesting Kubernetes con AWS EKS GuardDuty Detective ECR e Inspector
PPTX
Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...
PPTX
Aws Security Latam - Criptografia con KMS
PDF
Aws Community Day Guatemala Criptografia con AWS KMS
PDF
Testing Ansible Playbook con Molecule + TestInfra
PDF
Automatización de tareas con Ansible
PDF
Earthly, Dockerfile con esteroides
PDF
Infraestructura como Codigo para Developers
PDF
Terraspace, the definitive terraform framework
PDF
Manejo de packages en Kubernetes con Helm
PPTX
Cloud native Computing Perú Octubre
PDF
Agiles Peru 2019 - Infrastructure As Code
PDF
Workshop Infrastructure as Code - Suestra
PDF
Docker Compose to Production with Docker Swarm
PDF
GDG Lima - Docker Compose
PDF
Docker Lima meetup - 22 de junio
Testing Day Peru 2025 Introducción al testing en Infrastructure as Code
RAG en AWS llevando la IA Generativa al Siguiente Nivel
Seguridad Digital un encuentro con la Criptografía de la mano de AWS KMS
AWS Community Day Peru 2024 - Generative IA con AWS Bedrock + Langchain
Pentesting Kubernetes con AWS EKS GuardDuty Detective ECR e Inspector
Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...
Aws Security Latam - Criptografia con KMS
Aws Community Day Guatemala Criptografia con AWS KMS
Testing Ansible Playbook con Molecule + TestInfra
Automatización de tareas con Ansible
Earthly, Dockerfile con esteroides
Infraestructura como Codigo para Developers
Terraspace, the definitive terraform framework
Manejo de packages en Kubernetes con Helm
Cloud native Computing Perú Octubre
Agiles Peru 2019 - Infrastructure As Code
Workshop Infrastructure as Code - Suestra
Docker Compose to Production with Docker Swarm
GDG Lima - Docker Compose
Docker Lima meetup - 22 de junio

Último (20)

PDF
SUBDIVISIÓN URBANA PUEDE ENFRENTAR SERVIDUMBRE DE PASO.pdf
PDF
Sustitucion_del_maiz_por_harina_integral_de_zapall.pdf
PDF
Oficio SEC de formulación de cargos por el apagón del 25F en contra del CEN
PPTX
Contexto Normativo NSR10, presentacion 2025
PDF
Oficio SEC 293416 Comision Investigadora
PPTX
GEOLOGIA, principios , fundamentos y conceptos
PDF
5 Presentación de PowerPointGENERACIÓN DESECHOS UIS 18-02-2023 (1).pdf
PDF
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...
PDF
Armado de estructura Media tensión de 22.9
PDF
COMPARACION DE LA NUEVA LEY DE CONTRATAIONES DEL ESTADO 30269.pdf
PDF
FIJA NUEVO TEXTO DE LA ORDENANZA GENERAL DE LA LEY GENERAL DE URBANISMO Y CON...
PPTX
Software para la educación instituciones superiores
PDF
TESTAMENTO DE DESCRIPTIVA ..............
PPTX
Cortinas-en-Presas-de-Gravedad-Vertedoras-y-No-Vertedoras.pptx
PDF
Durabilidad del concreto en zonas costeras
PPT
tema DISEÑO ORGANIZACIONAL UNIDAD 1 A.ppt
PDF
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
PDF
marco legar de la gestion tecnologica en venezuela
PDF
Informe Estudio Final Apagon del 25 de febrero
PPTX
Gestion de seguridad y salud ocupacional.pptx
SUBDIVISIÓN URBANA PUEDE ENFRENTAR SERVIDUMBRE DE PASO.pdf
Sustitucion_del_maiz_por_harina_integral_de_zapall.pdf
Oficio SEC de formulación de cargos por el apagón del 25F en contra del CEN
Contexto Normativo NSR10, presentacion 2025
Oficio SEC 293416 Comision Investigadora
GEOLOGIA, principios , fundamentos y conceptos
5 Presentación de PowerPointGENERACIÓN DESECHOS UIS 18-02-2023 (1).pdf
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...
Armado de estructura Media tensión de 22.9
COMPARACION DE LA NUEVA LEY DE CONTRATAIONES DEL ESTADO 30269.pdf
FIJA NUEVO TEXTO DE LA ORDENANZA GENERAL DE LA LEY GENERAL DE URBANISMO Y CON...
Software para la educación instituciones superiores
TESTAMENTO DE DESCRIPTIVA ..............
Cortinas-en-Presas-de-Gravedad-Vertedoras-y-No-Vertedoras.pptx
Durabilidad del concreto en zonas costeras
tema DISEÑO ORGANIZACIONAL UNIDAD 1 A.ppt
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
marco legar de la gestion tecnologica en venezuela
Informe Estudio Final Apagon del 25 de febrero
Gestion de seguridad y salud ocupacional.pptx

Development Odoo Basic

  • 2. Agenda ●  Introducción ●  Configuración de módulos ●  Creación de un módulo ●  Definición de menu, action, vista ●  Fundamentos básicos de objetos ●  Vistas bussiness document
  • 3. ¿Qué es? ●  ERP + CMS ●  MVC ●  OpenObject ●  Python ●  PostgreSQL ●  Flexible ●  OpenSource
  • 5. Modelo MVC •  Model: todo_model.py •  View: todo_view.xml •  Controller: ORM y métodos
  • 6. ●  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 Instalación - Paquetería
  • 7. Instalación - 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
  • 8. Instalación - Docker-compose 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 Luego ejecutar: $ docker-compose up Crear archivo: docker-compose.yml
  • 13. Estructura de un módulo 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
  • 14. __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
  • 17. 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)
  • 18. Importando model •  Archivo __init__.py: from . import todo_model
  • 20. Campos predefinidos •  id •  create_date •  create_uid •  write_date •  write_uid
  • 21. View - Structure •  Archivo todo_view.xml: <?xml version="1.0"?> <openerp> <data> <!-- Data --> </data> </openerp>
  • 22. View - Action •  Agregamos action: <!-- Action to open To-do Task list --> <act_window id="action_todo_task" name="To- do Task" res_model="todo.task" view_mode="tree,form" />
  • 23. View - Menu •  Agregamos menu: <!-- Menu item to open To-do Task list --> <menuitem id="menu_todo_task" name="To- Do Tasks" parent="mail.mail_feeds" sequence="20" action="action_todo_task" />
  • 24. Activando todo_view.xml •  Agregar en __openerp__.py ‘data': ['todo_view.xml'],
  • 27. 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>
  • 28. Vista - Form personalizada •  Actualizar module y crear:
  • 29. Vista - Bussines document <form> <header> <!-- Buttons go here --> </header> <sheet> <!-- Content goes here --> <field name="name"/> <field name="is_done"/> </sheet> </form>
  • 30. 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>
  • 31. 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>
  • 32. Vista - Bussines document •  Actualizar module y crear:
  • 33. 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>
  • 34. Vista - List •  Actualizar y ver:
  • 35. 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>
  • 36. Vista - Search •  Actualizar y buscar:
  • 37. Agregando lógicade negocio •  Agregar al inicio de todo_model.py from openerp import models, fields, api •  Y como método: @api.one def do_toggle_done(self): self.is_done = not self.is_done return True
  • 38. Agregando lógica de negocio @api.multi def do_clear_done(self): done_recs = self.search([('is_done', '=', True)]) done_recs.write({'active': False}) return True
  • 39. Field - Tipos básicos •  Char •  Boolean •  Integer •  Float •  Text •  Selection •  Date / Datetime •  * Computed Mas info: https://www.odoo.com/documentation/8.0/reference/orm.html#fields
  • 40. 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"/>
  • 41. Field - Selection Actualizar module, listar y crear:
  • 42. Ejercicios •  Agregarle un campo de tipo fecha. •  Al módulo crearle un acceso desde el menú principal •  Agregarle un campo tipo selection que sea generado dinamicamente.