SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
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.

Contenu connexe

Tendances

Php07 consultas bd
Php07 consultas bdPhp07 consultas bd
Php07 consultas bdJulio Pari
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencapaulcuenca9
 
Php05 funciones usuario
Php05 funciones usuarioPhp05 funciones usuario
Php05 funciones usuarioJulio Pari
 
Php03 variables externas
Php03 variables externasPhp03 variables externas
Php03 variables externasJulio Pari
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendarjvelizster
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcatjubacalo
 
Php06 instalacion my_sql
Php06 instalacion my_sqlPhp06 instalacion my_sql
Php06 instalacion my_sqlJulio Pari
 
Php08 mantenimiento tablas
Php08 mantenimiento tablasPhp08 mantenimiento tablas
Php08 mantenimiento tablasJulio Pari
 
Presentacion
PresentacionPresentacion
PresentacionEl Jota
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...Pablo Godel
 

Tendances (11)

Php07 consultas bd
Php07 consultas bdPhp07 consultas bd
Php07 consultas bd
 
Funciones
FuncionesFunciones
Funciones
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
 
Php05 funciones usuario
Php05 funciones usuarioPhp05 funciones usuario
Php05 funciones usuario
 
Php03 variables externas
Php03 variables externasPhp03 variables externas
Php03 variables externas
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendar
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
Php06 instalacion my_sql
Php06 instalacion my_sqlPhp06 instalacion my_sql
Php06 instalacion my_sql
 
Php08 mantenimiento tablas
Php08 mantenimiento tablasPhp08 mantenimiento tablas
Php08 mantenimiento tablas
 
Presentacion
PresentacionPresentacion
Presentacion
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
 

En vedette

Timesheet based payroll
Timesheet based payrollTimesheet based payroll
Timesheet based payrollCeline George
 
How to configure PyCharm for Odoo development in Windows?
How to configure PyCharm for Odoo development in Windows?How to configure PyCharm for Odoo development in Windows?
How to configure PyCharm for Odoo development in Windows?Celine George
 
Odoo (OpenERP) - Creating a module
Odoo (OpenERP) - Creating a moduleOdoo (OpenERP) - Creating a module
Odoo (OpenERP) - Creating a moduleTarun Behal
 
Xml operations in odoo
Xml operations in odooXml operations in odoo
Xml operations in odooCeline George
 
Odoo - Create themes for website
Odoo - Create themes for websiteOdoo - Create themes for website
Odoo - Create themes for websiteOdoo
 
User Manual For Crafito Odoo Theme
User Manual For Crafito Odoo ThemeUser Manual For Crafito Odoo Theme
User Manual For Crafito Odoo ThemeAppJetty
 
Odoo - Backend modules in v8
Odoo - Backend modules in v8Odoo - Backend modules in v8
Odoo - Backend modules in v8Odoo
 

En vedette (9)

Timesheet based payroll
Timesheet based payrollTimesheet based payroll
Timesheet based payroll
 
How to configure PyCharm for Odoo development in Windows?
How to configure PyCharm for Odoo development in Windows?How to configure PyCharm for Odoo development in Windows?
How to configure PyCharm for Odoo development in Windows?
 
Odoo (OpenERP) - Creating a module
Odoo (OpenERP) - Creating a moduleOdoo (OpenERP) - Creating a module
Odoo (OpenERP) - Creating a module
 
Xml operations in odoo
Xml operations in odooXml operations in odoo
Xml operations in odoo
 
Widgets in odoo
Widgets in odooWidgets in odoo
Widgets in odoo
 
Odoo Web Services
Odoo Web ServicesOdoo Web Services
Odoo Web Services
 
Odoo - Create themes for website
Odoo - Create themes for websiteOdoo - Create themes for website
Odoo - Create themes for website
 
User Manual For Crafito Odoo Theme
User Manual For Crafito Odoo ThemeUser Manual For Crafito Odoo Theme
User Manual For Crafito Odoo Theme
 
Odoo - Backend modules in v8
Odoo - Backend modules in v8Odoo - Backend modules in v8
Odoo - Backend modules in v8
 

Similaire à Development Odoo Basic

Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephpbetabeers
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPHP Vigo
 
Construyendo y publicando nuestra primera app multiplataforma
Construyendo y publicando nuestra primera app multiplataformaConstruyendo y publicando nuestra primera app multiplataforma
Construyendo y publicando nuestra primera app multiplataformaCarlos Alonso Pérez
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5Cycle-IT
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5Cycle-IT
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
 
Directorio betabeers - symfony madrid
Directorio betabeers - symfony madridDirectorio betabeers - symfony madrid
Directorio betabeers - symfony madridbetabeers
 
Anatomía de implementación de un LCMS basado en moodle
Anatomía de implementación de un LCMS basado en moodleAnatomía de implementación de un LCMS basado en moodle
Anatomía de implementación de un LCMS basado en moodleJosé Luis Granda
 
Taller de Django betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeersbetabeers
 
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos AiresPresentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Airespeterpunk
 
J!D Barcelona 2009 - Taller Plantillas Avanzado
J!D Barcelona 2009 - Taller Plantillas AvanzadoJ!D Barcelona 2009 - Taller Plantillas Avanzado
J!D Barcelona 2009 - Taller Plantillas AvanzadoSergioIglesiasNET
 

Similaire à Development Odoo Basic (20)

Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Primefaces
PrimefacesPrimefaces
Primefaces
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Python scraping
Python scrapingPython scraping
Python scraping
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
 
Construyendo y publicando nuestra primera app multiplataforma
Construyendo y publicando nuestra primera app multiplataformaConstruyendo y publicando nuestra primera app multiplataforma
Construyendo y publicando nuestra primera app multiplataforma
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5
 
Iniciación Con CakePHP
Iniciación Con CakePHPIniciación Con CakePHP
Iniciación Con CakePHP
 
Html5
Html5Html5
Html5
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 
Phonegap
PhonegapPhonegap
Phonegap
 
Directorio betabeers - symfony madrid
Directorio betabeers - symfony madridDirectorio betabeers - symfony madrid
Directorio betabeers - symfony madrid
 
Anatomía de implementación de un LCMS basado en moodle
Anatomía de implementación de un LCMS basado en moodleAnatomía de implementación de un LCMS basado en moodle
Anatomía de implementación de un LCMS basado en moodle
 
wp-cli
wp-cliwp-cli
wp-cli
 
Taller de Django betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeers
 
Desarrollo de sitios web con php y my sql
Desarrollo de sitios web con php y my sqlDesarrollo de sitios web con php y my sql
Desarrollo de sitios web con php y my sql
 
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos AiresPresentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
 
J!D Barcelona 2009 - Taller Plantillas Avanzado
J!D Barcelona 2009 - Taller Plantillas AvanzadoJ!D Barcelona 2009 - Taller Plantillas Avanzado
J!D Barcelona 2009 - Taller Plantillas Avanzado
 

Plus de Mario IC

Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...
Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...
Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...Mario IC
 
Aws Security Latam - Criptografia con KMS
Aws Security Latam - Criptografia con KMSAws Security Latam - Criptografia con KMS
Aws Security Latam - Criptografia con KMSMario IC
 
Aws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMSAws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMSMario IC
 
Testing Ansible Playbook con Molecule + TestInfra
Testing Ansible Playbook con Molecule + TestInfraTesting Ansible Playbook con Molecule + TestInfra
Testing Ansible Playbook con Molecule + TestInfraMario IC
 
Automatización de tareas con Ansible
Automatización de tareas con AnsibleAutomatización de tareas con Ansible
Automatización de tareas con AnsibleMario IC
 
Earthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroidesEarthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroidesMario IC
 
Infraestructura como Codigo para Developers
Infraestructura como Codigo para DevelopersInfraestructura como Codigo para Developers
Infraestructura como Codigo para DevelopersMario IC
 
Terraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkTerraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkMario IC
 
Manejo de packages en Kubernetes con Helm
Manejo de packages en Kubernetes con HelmManejo de packages en Kubernetes con Helm
Manejo de packages en Kubernetes con HelmMario IC
 
Cloud native Computing Perú Octubre
Cloud native Computing Perú OctubreCloud native Computing Perú Octubre
Cloud native Computing Perú OctubreMario IC
 
Agiles Peru 2019 - Infrastructure As Code
Agiles Peru 2019 - Infrastructure As CodeAgiles Peru 2019 - Infrastructure As Code
Agiles Peru 2019 - Infrastructure As CodeMario IC
 
Workshop Infrastructure as Code - Suestra
Workshop Infrastructure as Code - SuestraWorkshop Infrastructure as Code - Suestra
Workshop Infrastructure as Code - SuestraMario IC
 
Docker Compose to Production with Docker Swarm
Docker Compose to Production with Docker SwarmDocker Compose to Production with Docker Swarm
Docker Compose to Production with Docker SwarmMario IC
 
GDG Lima - Docker Compose
GDG Lima - Docker ComposeGDG Lima - Docker Compose
GDG Lima - Docker ComposeMario IC
 
Docker Lima meetup - 22 de junio
Docker Lima meetup - 22 de junioDocker Lima meetup - 22 de junio
Docker Lima meetup - 22 de junioMario IC
 
Docker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup MayoDocker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup MayoMario IC
 
Testing en BDD con Python y Behave
Testing en BDD con Python y BehaveTesting en BDD con Python y Behave
Testing en BDD con Python y BehaveMario IC
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with TerraformMario IC
 
Docker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbdayDocker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbdayMario IC
 
Modelado de API con RAML
Modelado de API con RAMLModelado de API con RAML
Modelado de API con RAMLMario IC
 

Plus de Mario IC (20)

Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...
Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...
Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...
 
Aws Security Latam - Criptografia con KMS
Aws Security Latam - Criptografia con KMSAws Security Latam - Criptografia con KMS
Aws Security Latam - Criptografia con KMS
 
Aws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMSAws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMS
 
Testing Ansible Playbook con Molecule + TestInfra
Testing Ansible Playbook con Molecule + TestInfraTesting Ansible Playbook con Molecule + TestInfra
Testing Ansible Playbook con Molecule + TestInfra
 
Automatización de tareas con Ansible
Automatización de tareas con AnsibleAutomatización de tareas con Ansible
Automatización de tareas con Ansible
 
Earthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroidesEarthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroides
 
Infraestructura como Codigo para Developers
Infraestructura como Codigo para DevelopersInfraestructura como Codigo para Developers
Infraestructura como Codigo para Developers
 
Terraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkTerraspace, the definitive terraform framework
Terraspace, the definitive terraform framework
 
Manejo de packages en Kubernetes con Helm
Manejo de packages en Kubernetes con HelmManejo de packages en Kubernetes con Helm
Manejo de packages en Kubernetes con Helm
 
Cloud native Computing Perú Octubre
Cloud native Computing Perú OctubreCloud native Computing Perú Octubre
Cloud native Computing Perú Octubre
 
Agiles Peru 2019 - Infrastructure As Code
Agiles Peru 2019 - Infrastructure As CodeAgiles Peru 2019 - Infrastructure As Code
Agiles Peru 2019 - Infrastructure As Code
 
Workshop Infrastructure as Code - Suestra
Workshop Infrastructure as Code - SuestraWorkshop Infrastructure as Code - Suestra
Workshop Infrastructure as Code - Suestra
 
Docker Compose to Production with Docker Swarm
Docker Compose to Production with Docker SwarmDocker Compose to Production with Docker Swarm
Docker Compose to Production with Docker Swarm
 
GDG Lima - Docker Compose
GDG Lima - Docker ComposeGDG Lima - Docker Compose
GDG Lima - Docker Compose
 
Docker Lima meetup - 22 de junio
Docker Lima meetup - 22 de junioDocker Lima meetup - 22 de junio
Docker Lima meetup - 22 de junio
 
Docker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup MayoDocker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup Mayo
 
Testing en BDD con Python y Behave
Testing en BDD con Python y BehaveTesting en BDD con Python y Behave
Testing en BDD con Python y Behave
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with Terraform
 
Docker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbdayDocker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbday
 
Modelado de API con RAML
Modelado de API con RAMLModelado de API con RAML
Modelado de API con RAML
 

Dernier

594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...humberto espejo
 
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptxI LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptxPATRICIAKARIMESTELAL
 
LIQUIDACION OBRAS PUBLICAS POR CONTRATA.pdf
LIQUIDACION OBRAS PUBLICAS  POR CONTRATA.pdfLIQUIDACION OBRAS PUBLICAS  POR CONTRATA.pdf
LIQUIDACION OBRAS PUBLICAS POR CONTRATA.pdfManuelVillarreal44
 
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEfrain Yungan
 
1. Cap. 4 Carga Axial (1).pdf237374335347
1. Cap. 4 Carga Axial (1).pdf2373743353471. Cap. 4 Carga Axial (1).pdf237374335347
1. Cap. 4 Carga Axial (1).pdf237374335347vd110501
 
Diseño de un aerogenerador de 400w de eje vertical
Diseño de un aerogenerador de 400w de eje verticalDiseño de un aerogenerador de 400w de eje vertical
Diseño de un aerogenerador de 400w de eje verticalEfrain Yungan
 
Procedimientos constructivos superestructura, columnas
Procedimientos constructivos superestructura, columnasProcedimientos constructivos superestructura, columnas
Procedimientos constructivos superestructura, columnasAhmedMontaoSnchez1
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfErikNivor
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...Arquitecto Alejandro Gomez cornejo muñoz
 
PRIMER Y SEGUNDO TEOREMA DE CASTIGLIANO.pdf
PRIMER Y SEGUNDO TEOREMA DE CASTIGLIANO.pdfPRIMER Y SEGUNDO TEOREMA DE CASTIGLIANO.pdf
PRIMER Y SEGUNDO TEOREMA DE CASTIGLIANO.pdfAuraGabriela2
 
Informe Mensual MARZO DE SUPERVISION.docx
Informe Mensual MARZO DE SUPERVISION.docxInforme Mensual MARZO DE SUPERVISION.docx
Informe Mensual MARZO DE SUPERVISION.docxTAKESHISAC
 
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptxNayeliZarzosa1
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfIsbelRodrguez
 
FORMACION-INTEGRAL-DE-LINIEROS modelo de curso.pdf
FORMACION-INTEGRAL-DE-LINIEROS modelo de curso.pdfFORMACION-INTEGRAL-DE-LINIEROS modelo de curso.pdf
FORMACION-INTEGRAL-DE-LINIEROS modelo de curso.pdfEfrain Yungan
 
Tema 7 Plantas Industriales (2).pptx ingenieria
Tema 7 Plantas Industriales (2).pptx ingenieriaTema 7 Plantas Industriales (2).pptx ingenieria
Tema 7 Plantas Industriales (2).pptx ingenieriaLissetteMorejonLeon
 
JimyPomalaza vivienda rural huancavelica .pdf
JimyPomalaza vivienda rural huancavelica .pdfJimyPomalaza vivienda rural huancavelica .pdf
JimyPomalaza vivienda rural huancavelica .pdfJimyPomalaza
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCarlos Delgado
 
PLAN DE TRABAJO - CONTRATISTA CORIS.docx
PLAN DE TRABAJO - CONTRATISTA CORIS.docxPLAN DE TRABAJO - CONTRATISTA CORIS.docx
PLAN DE TRABAJO - CONTRATISTA CORIS.docxTAKESHISAC
 
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdfMETROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdfesparzadaniela548
 
La mineralogia y minerales, clasificacion
La mineralogia y minerales, clasificacionLa mineralogia y minerales, clasificacion
La mineralogia y minerales, clasificacionnewspotify528
 

Dernier (20)

594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
 
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptxI LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
 
LIQUIDACION OBRAS PUBLICAS POR CONTRATA.pdf
LIQUIDACION OBRAS PUBLICAS  POR CONTRATA.pdfLIQUIDACION OBRAS PUBLICAS  POR CONTRATA.pdf
LIQUIDACION OBRAS PUBLICAS POR CONTRATA.pdf
 
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
 
1. Cap. 4 Carga Axial (1).pdf237374335347
1. Cap. 4 Carga Axial (1).pdf2373743353471. Cap. 4 Carga Axial (1).pdf237374335347
1. Cap. 4 Carga Axial (1).pdf237374335347
 
Diseño de un aerogenerador de 400w de eje vertical
Diseño de un aerogenerador de 400w de eje verticalDiseño de un aerogenerador de 400w de eje vertical
Diseño de un aerogenerador de 400w de eje vertical
 
Procedimientos constructivos superestructura, columnas
Procedimientos constructivos superestructura, columnasProcedimientos constructivos superestructura, columnas
Procedimientos constructivos superestructura, columnas
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
 
PRIMER Y SEGUNDO TEOREMA DE CASTIGLIANO.pdf
PRIMER Y SEGUNDO TEOREMA DE CASTIGLIANO.pdfPRIMER Y SEGUNDO TEOREMA DE CASTIGLIANO.pdf
PRIMER Y SEGUNDO TEOREMA DE CASTIGLIANO.pdf
 
Informe Mensual MARZO DE SUPERVISION.docx
Informe Mensual MARZO DE SUPERVISION.docxInforme Mensual MARZO DE SUPERVISION.docx
Informe Mensual MARZO DE SUPERVISION.docx
 
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdf
 
FORMACION-INTEGRAL-DE-LINIEROS modelo de curso.pdf
FORMACION-INTEGRAL-DE-LINIEROS modelo de curso.pdfFORMACION-INTEGRAL-DE-LINIEROS modelo de curso.pdf
FORMACION-INTEGRAL-DE-LINIEROS modelo de curso.pdf
 
Tema 7 Plantas Industriales (2).pptx ingenieria
Tema 7 Plantas Industriales (2).pptx ingenieriaTema 7 Plantas Industriales (2).pptx ingenieria
Tema 7 Plantas Industriales (2).pptx ingenieria
 
JimyPomalaza vivienda rural huancavelica .pdf
JimyPomalaza vivienda rural huancavelica .pdfJimyPomalaza vivienda rural huancavelica .pdf
JimyPomalaza vivienda rural huancavelica .pdf
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric Project
 
PLAN DE TRABAJO - CONTRATISTA CORIS.docx
PLAN DE TRABAJO - CONTRATISTA CORIS.docxPLAN DE TRABAJO - CONTRATISTA CORIS.docx
PLAN DE TRABAJO - CONTRATISTA CORIS.docx
 
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdfMETROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
 
La mineralogia y minerales, clasificacion
La mineralogia y minerales, clasificacionLa mineralogia y minerales, clasificacion
La mineralogia y minerales, clasificacion
 

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.