SlideShare una empresa de Scribd logo
Jornadas Odoo 2015
15 de junio de 2015
@PedroMBaeza
pedro.baeza@serviciosbaeza.co
Cómo migrar un
módulo OpenERP a la
nueva API de Odoo
●
Programación más sencilla, clara y corta
●
Menos posibilidades de errores (p, ej.
propagación del context)
●
Más posibilidades con el framework
(filtered, sorted, mapped...).
●
Herencia mejorada.
●
onchange y campos calculados más
intuitivos
¿Por qué migrar a la nueva API?
●
Declaración de modelos
Cambios de la nueva API (I)
orm.Model/osv.osv > models.Model
orm.TransientModel/osv.osv_memory > models.TransientModel
orm.AbstractModel > models.AbstractModel
●
Declaración de campos
Cambios de la nueva API (II)
_columns = {
'field1': fields.boolean('Field 1'),
'field2': fields.integer('Field 2'),
}
_columns = {
'field1': fields.boolean('Field 1'),
'field2': fields.integer('Field 2'),
}
field1 = fields.Boolean('Field 1')
field2 = fields.Integer('Field 2')
●
Valores por defecto
Cambios de la nueva API (III)
field1 = fields.Boolean(...,
default=False)
field2 = fields.Integer(...,
default=2)
_defaults = {
'field1': False,
'field2': 2,
}
●
Campos calculados
Cambios de la nueva API (IV)
field1 = fields.Float('_function',
string='Field 1', store=True)
@api.depends(...)
def _function(self):
self.field1 = ...
_columns = {
'field1': fields.function(.
_function, type='float',
string='Field 1', store={...}),
}
def get_store_ids(cr, uid, …):
...
return {}
●
Campos related
Cambios de la nueva API (V)
field1 = fields.Float(.
related='campo_x2x.campo_destino',
string='Field 1')
_columns = {
'field1': fields.related(.
'campo_x2x', 'campo_destino',
string='Field 1', type='float'),
}
●
Campos property
Cambios de la nueva API (VI)
field1 = fields.Float(.
company_dependent=True,
string='Field 1')
_columns = {
'field1': fields.property(.
string='Field 1', type='float'),
}
●
Métodos
Cambios de la nueva API (VII)
def write(self, cr, uid, ids, vals,
context):
…
def create(self, cr, uid, vals,
context):
…
@api.multi
def write(self, vals):
…
@api.model
def create(self, vals):
…
●
onchange
Cambios de la nueva API (VIII)
@api.multi
@api.onchange('fieldx')
def onchange_fieldx(self):
self.field1 = x
def onchange_fieldx(self, cr, uid,
ids, context):
res = {}
res['value'] = {'field1': x}
return res
<field name=”fieldx”
onchange=”onchange_fieldx”/>
●
env
Cambios de la nueva API (IX)
def method(self):
self.sudo().method2()
self.with_context(x=23).method3()
def method(self, cr, uid, ids,
context=None):
self.method2(cr, . . .
SUPERUSER_ID, ids, context)
context['x'] = 23
self.method3(cr, uid, ids, context)
●
Vistas
Cambios de la nueva API (X)
Sin cambios
MIGRACIÓN EN VIVO

Más contenido relacionado

PPTX
Estructura basica de_un_programa_en_c_(2)
PPTX
Estructura basica de_c_
PPTX
Estructura basica para_c_ (1)
PPSX
Tecnicas de graficacion_v5
PPTX
Recuperacin 333333
PPTX
Arreglos de registro
PPTX
Estructura basica-para-c++ (1)
DOCX
Guia Programacion 1
Estructura basica de_un_programa_en_c_(2)
Estructura basica de_c_
Estructura basica para_c_ (1)
Tecnicas de graficacion_v5
Recuperacin 333333
Arreglos de registro
Estructura basica-para-c++ (1)
Guia Programacion 1

Destacado (20)

ODP
Jornadas Odoo 2015 - Buenas prácticas en el desarrollo de Odoo
PDF
VAT: Manage your risk and maximise your cashflow
PDF
DocUbuntu - Instalacion Estandar
PDF
DocOpenERP - Manual openerp.230209
PDF
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...
PDF
Open erp tutorial_basico
PDF
mis_builder 2015
ODP
mis_builder 2016
PDF
Jornadas Odoo 2016 - La comunidad mundial de Odoo (OCA) y su ecosistema - Ped...
PDF
Odoo development workflow with pip and virtualenv
PDF
Odoo - From v7 to v8: the new api
PPTX
La nueva educacion en la sociedad del conocimiento
PPT
història del software
DOCX
Aprendizaje basado en problemas
PDF
Arrepentimiento y perdón
DOC
Anexo i conversión de números
PPT
Alimentación
PPT
Construcció d'una videoconsola
PDF
4- Nous reptes i mesures del model català de Recerca.pdf
Jornadas Odoo 2015 - Buenas prácticas en el desarrollo de Odoo
VAT: Manage your risk and maximise your cashflow
DocUbuntu - Instalacion Estandar
DocOpenERP - Manual openerp.230209
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...
Open erp tutorial_basico
mis_builder 2015
mis_builder 2016
Jornadas Odoo 2016 - La comunidad mundial de Odoo (OCA) y su ecosistema - Ped...
Odoo development workflow with pip and virtualenv
Odoo - From v7 to v8: the new api
La nueva educacion en la sociedad del conocimiento
història del software
Aprendizaje basado en problemas
Arrepentimiento y perdón
Anexo i conversión de números
Alimentación
Construcció d'una videoconsola
4- Nous reptes i mesures del model català de Recerca.pdf
Publicidad

Más de Pedro Manuel Baeza Romero (18)

PDF
Jornadas Odoo 2016 - Odoo 9 seis meses después - Pedro M. Baeza
PDF
Jornadas Odoo 2016 - Localización española de Odoo - Pedro M. Baeza
PDF
Jornadas Odoo 2016 - ¿Qué esperar de una nueva implantación de un ERP (Odoo)?...
PDF
Jornadas Odoo 2016 - Cómo crear temas multi-website con Odoo v8 - Antonio Esp...
PDF
Jornadas Odoo 2016 - Proyectos y tareas: Tan sencillo como potente - Antonio ...
PDF
Jornadas Odoo 2015 - Odoo: Mucho más que un ERP
PDF
Jornadas Odoo 2015 - Próximo cambio de licencia de Odoo y cómo nos afecta
PDF
Jornadas Odoo 2015 - Implantación de Odoo en una empresa de automatización in...
PDF
Jornadas Odoo 2015 - Odoo para empresas de fabricación: OdooMRP
PDF
Jornadas Odoo 2015 - Charla con Odoo S. A.
ODP
Jornadas Odoo 2015 - De oca en OCA... beneficios de trabajar en la comunidad
PDF
Jornadas Odoo 2015 - Gestión de almacén personalizada para venta Flash. Caso ...
PPT
Jornadas Odoo 2015 - Gánate a tu director financiero con la contabilidad de Odoo
PPTX
Jornadas Odoo 2015 - Caso de éxito Wonkandy S. L.
PDF
Jornadas Odoo 2015 - Nuevos módulos e-commerce para Odoo
PDF
Jornadas Odoo 2015 - Diseño y creación de un tema Bootstrap para Odoo
ODP
Jornadas Odoo 2015 - Novedades Odoo v9
PDF
Jornadas odoo 2015 - Proyectos de I+D en Eficent
Jornadas Odoo 2016 - Odoo 9 seis meses después - Pedro M. Baeza
Jornadas Odoo 2016 - Localización española de Odoo - Pedro M. Baeza
Jornadas Odoo 2016 - ¿Qué esperar de una nueva implantación de un ERP (Odoo)?...
Jornadas Odoo 2016 - Cómo crear temas multi-website con Odoo v8 - Antonio Esp...
Jornadas Odoo 2016 - Proyectos y tareas: Tan sencillo como potente - Antonio ...
Jornadas Odoo 2015 - Odoo: Mucho más que un ERP
Jornadas Odoo 2015 - Próximo cambio de licencia de Odoo y cómo nos afecta
Jornadas Odoo 2015 - Implantación de Odoo en una empresa de automatización in...
Jornadas Odoo 2015 - Odoo para empresas de fabricación: OdooMRP
Jornadas Odoo 2015 - Charla con Odoo S. A.
Jornadas Odoo 2015 - De oca en OCA... beneficios de trabajar en la comunidad
Jornadas Odoo 2015 - Gestión de almacén personalizada para venta Flash. Caso ...
Jornadas Odoo 2015 - Gánate a tu director financiero con la contabilidad de Odoo
Jornadas Odoo 2015 - Caso de éxito Wonkandy S. L.
Jornadas Odoo 2015 - Nuevos módulos e-commerce para Odoo
Jornadas Odoo 2015 - Diseño y creación de un tema Bootstrap para Odoo
Jornadas Odoo 2015 - Novedades Odoo v9
Jornadas odoo 2015 - Proyectos de I+D en Eficent
Publicidad

Último (20)

PPTX
SESIÓN17SESIÓN17SESIÓN17SESIÓN17SESIÓN17SESIÓN17SESIÓN17SESIÓN17SESIÓN17SESIÓ...
PDF
Rendicion publica de cuentas inicial 2025 de la procuraduria
PDF
Clase 15 - Normas de Aseguramiento.pptx.pdf
PPTX
auditoria ambiental y su uso en la practica diaria
PPTX
TRABAJO FINAL-EMPRESA CARNES FRIAS CON CORRECCIONES.pptx
PPTX
6. El proceso de la planificación.pptx6. El proceso de la planificación.pptx
PDF
MODELO DE INNOVACION VERNE,HERRAMIENTAS Y METODO.pdf
PPT
TALLERLIDERAZGO.ppt Competencias Gerenciales
PPTX
CREACION DE MARCA EMPRESAS CONTEXTO EMPRESARIAL
PPT
Teoria General de Sistemas empresariales
PPTX
GESTION DE RECURSOS HUMANOS - MATERIAL ENTREGADO EN UTN FRC
PPTX
FORMATO DE PRESENTACION EMPRESARIAL.pptx
PDF
D08_SESION 15 y 16_2024.12.06_ISO-26000.pdf
PDF
ORD-REG-ELEMENTOS-PUBLICITARIOS-AMSS-12-MARZO.pdf
PDF
alejandrobcjjjjjjjjjjjjjjjjjjjjjjjjjjj.pdf
PDF
03 - Unidad II - La Plataforma .NET y C# - 2. Tipos Primitivos y Expresiones.pdf
PDF
CV Carlos Lira Zalaquett_Agosto 2025 - Asesor Técnico Empresarial / Facilitador
PPTX
Elementos del Entorno-Elementos del Entorno
PPTX
norma epidemiologica en el primer nivel de atencion
PDF
EL ESTUDIO DE MERCADO PROYECTO INVERSION.pdf
SESIÓN17SESIÓN17SESIÓN17SESIÓN17SESIÓN17SESIÓN17SESIÓN17SESIÓN17SESIÓN17SESIÓ...
Rendicion publica de cuentas inicial 2025 de la procuraduria
Clase 15 - Normas de Aseguramiento.pptx.pdf
auditoria ambiental y su uso en la practica diaria
TRABAJO FINAL-EMPRESA CARNES FRIAS CON CORRECCIONES.pptx
6. El proceso de la planificación.pptx6. El proceso de la planificación.pptx
MODELO DE INNOVACION VERNE,HERRAMIENTAS Y METODO.pdf
TALLERLIDERAZGO.ppt Competencias Gerenciales
CREACION DE MARCA EMPRESAS CONTEXTO EMPRESARIAL
Teoria General de Sistemas empresariales
GESTION DE RECURSOS HUMANOS - MATERIAL ENTREGADO EN UTN FRC
FORMATO DE PRESENTACION EMPRESARIAL.pptx
D08_SESION 15 y 16_2024.12.06_ISO-26000.pdf
ORD-REG-ELEMENTOS-PUBLICITARIOS-AMSS-12-MARZO.pdf
alejandrobcjjjjjjjjjjjjjjjjjjjjjjjjjjj.pdf
03 - Unidad II - La Plataforma .NET y C# - 2. Tipos Primitivos y Expresiones.pdf
CV Carlos Lira Zalaquett_Agosto 2025 - Asesor Técnico Empresarial / Facilitador
Elementos del Entorno-Elementos del Entorno
norma epidemiologica en el primer nivel de atencion
EL ESTUDIO DE MERCADO PROYECTO INVERSION.pdf

Jornadas Odoo 2015 - Cómo migrar un módulo OpenERP a la nueva API de Odoo

  • 1. Jornadas Odoo 2015 15 de junio de 2015 @PedroMBaeza pedro.baeza@serviciosbaeza.co Cómo migrar un módulo OpenERP a la nueva API de Odoo
  • 2. ● Programación más sencilla, clara y corta ● Menos posibilidades de errores (p, ej. propagación del context) ● Más posibilidades con el framework (filtered, sorted, mapped...). ● Herencia mejorada. ● onchange y campos calculados más intuitivos ¿Por qué migrar a la nueva API?
  • 3. ● Declaración de modelos Cambios de la nueva API (I) orm.Model/osv.osv > models.Model orm.TransientModel/osv.osv_memory > models.TransientModel orm.AbstractModel > models.AbstractModel
  • 4. ● Declaración de campos Cambios de la nueva API (II) _columns = { 'field1': fields.boolean('Field 1'), 'field2': fields.integer('Field 2'), } _columns = { 'field1': fields.boolean('Field 1'), 'field2': fields.integer('Field 2'), } field1 = fields.Boolean('Field 1') field2 = fields.Integer('Field 2')
  • 5. ● Valores por defecto Cambios de la nueva API (III) field1 = fields.Boolean(..., default=False) field2 = fields.Integer(..., default=2) _defaults = { 'field1': False, 'field2': 2, }
  • 6. ● Campos calculados Cambios de la nueva API (IV) field1 = fields.Float('_function', string='Field 1', store=True) @api.depends(...) def _function(self): self.field1 = ... _columns = { 'field1': fields.function(. _function, type='float', string='Field 1', store={...}), } def get_store_ids(cr, uid, …): ... return {}
  • 7. ● Campos related Cambios de la nueva API (V) field1 = fields.Float(. related='campo_x2x.campo_destino', string='Field 1') _columns = { 'field1': fields.related(. 'campo_x2x', 'campo_destino', string='Field 1', type='float'), }
  • 8. ● Campos property Cambios de la nueva API (VI) field1 = fields.Float(. company_dependent=True, string='Field 1') _columns = { 'field1': fields.property(. string='Field 1', type='float'), }
  • 9. ● Métodos Cambios de la nueva API (VII) def write(self, cr, uid, ids, vals, context): … def create(self, cr, uid, vals, context): … @api.multi def write(self, vals): … @api.model def create(self, vals): …
  • 10. ● onchange Cambios de la nueva API (VIII) @api.multi @api.onchange('fieldx') def onchange_fieldx(self): self.field1 = x def onchange_fieldx(self, cr, uid, ids, context): res = {} res['value'] = {'field1': x} return res <field name=”fieldx” onchange=”onchange_fieldx”/>
  • 11. ● env Cambios de la nueva API (IX) def method(self): self.sudo().method2() self.with_context(x=23).method3() def method(self, cr, uid, ids, context=None): self.method2(cr, . . . SUPERUSER_ID, ids, context) context['x'] = 23 self.method3(cr, uid, ids, context)
  • 12. ● Vistas Cambios de la nueva API (X) Sin cambios