Hola amigos hoy quiero compartir con ustedes como crear módulos en Odoo ERP V8, como ya habrán leído han habido ciertos cambios en la forma de desarrollar los módulos respecto a Odoo ERP v7 .

En Odoo v8 hay una nueva forma rápida de crear módulos, es decir que ejecutamos unos comandos y veremos como se crean la estructura general de un modulo, para este tutorial hemos seguido los lineamientos generales de la documentación expuesto en Odoo

Vamos a suponer que tenemos instalado Odoo v8 en Ubuntu 14.

1. Ingresamos a la ruta siguiente /opt/odoo/server en donde están los archivos de Odoo, luego ejecutamos el comando que nos permitirá crear la estructura general de un módulo.

$ cd /opt/odoo/server
$ python odoo.py scaffold openacademy /opt/odoo/modulos/

Donde:
scaffold: comando para crear un la estructura genérica de un modulo en odoo.
openacademy: Nombre del módulo
/opt/odoo/modulos/: Ruta en donde se creará la estructura del módulo

Luego veremos como es que se ha creado la estructura general del módulo.

foto

De los archivos creados para nuestro ejemplo son importantes los siguientes: __init__.py, __openerp__.py, models.py y templates.xml son las que usaremos para este ejemplo.

2. Imgresamos al archivo openacademy/__init__.py y vemos como se importa los archivos.py del modulo.

odoo1

__init__.py: Aquí se importa todos los archivos y directorios que contienen codigo python, éste archivo hace que Odoo reconozca al directorio o capeta openacademy como un módulo, para nuestro ejemplo nos interesa el archivo models.py sea importado.

 

3. Ingresamos al archivo openacademy/__openerp__.py y modificamos la descripción, autor, versión, etc. del modulo.

odoo2

__openerp__.py: Es un diccionario en Python para agregar las descripciones del módulo, como autor, versión, etc.

4.  En el archivo openacademy/models.py es donde definiremos el modelo.

Para nuestro ejemplo vamos a crear una clase Curso dentro del modulo openacademy, con los atributos titulo y descripcion

# -*- coding: utf-8 -*-

from openerp import models, fields, api

class openacademy_curso(models.Model):
    _name = 'openacademy.curso'
    name = fields.Char(string="Title", required=True)
    description = fields.Text()

Donde:
_name: Nombre del modelo, este nombre también es el nombre de la tabla que se creará en la base de datos postgresql para nuestro caso será openacademy_curso, solo que el punto(.) es reemplazado por guion bajo (_).
name: primer atributo del modelo, se recomienda que todo modelo tenga un atributo name, para este caso es de tipo Char.
description: Segundo atributo del modelo de tipo Text

Podemos agregar mas campos a nuestro modelo, por ejemplo campos de tipo fecha, float, select, boolean, many2one, etc.
mas detalles aquí.


5. Creando Acciones y Menus

Las acciones y los menus son registros en la base de datos que se declaran en un archivo xml, las acciones pueden ser activados de las formas siguientes:

  • Haciendo clic en los items del menú
  • Haciendo clic en botones definidos en la vista del modelo.

Para nuestro ejemplo usaremos la primera opción mencionada arriba para eso definimos un menú que permita acceder a listado de cursos.

Para eso editamos el archivo openacademy/templates.xml y agregamos lo siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<openerp>
    <data>
        <!-- Definimos la accion -->

        <record model="ir.actions.act_window" id="course_list_action">
            <field name="name">Cursos</field>
            <field name="res_model">openacademy.curso</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="help" type="html">
                <p class="oe_view_nocontent_create">Cree el primer curso</p>
            </field>
        </record>

        <!-- menu superior o principal: no hereda de otro menu -->
        <menuitem id="main_openacademy_menu" name="Cursos"/>

        <!-- Definimos un menu de solo vista, este menu tiene como menu padre a Cursos -->
        <menuitem id="openacademy_menu" name="Cursos academicos" parent="main_openacademy_menu"/>
        <!-- Definimos otro menu que tiene como menu padre a Curso academicos.-->
        <menuitem id="courses_menu" name="Cursos" parent="openacademy_menu" action="course_list_action"/>

    </data>
</openerp>

Una acción en Odoo se define mediante las etiquetas

<record></record>

La etiqueta <record> tiene los atributos

model : Permite generar una herencia del modelo ir.actions.act_window
id: Identificador único para cada acción
<field name=»name»>Cursos</field> : Permite asignar un nombre a la accion
<field name=»res_model»>openacademy.curso</field>: Permite asociar dicha acción al modelo

Un menú en Odoo se define mediante las etiquetas

<menuitem/>

La etiqueta <menuitem> tiene los atributos:

id: identificador único para cada menu
name: Nombre del menu(label)
parent: Indica si un menú es hijo de otro menú
action: Permite asociar un menú a una acción.

 

Finalmente luego de instalar nuestro módulo:

odoo

 

Es todo amigos, espero que le sea de ayuda, estaré publicando otro tutorial para ver como personalizar la vista tree y form del nuestro módulo.

 

Categorías: Odoo ERP v8

Javier Salazar Carlos

Soy Ingeniero de Ingeniería de Sistemas, egresado de la Universidad Nacional del Callao, especialista en Tecnologías de la Información y de las Comunicaciones (TICs).

12 comentarios

Luis · 12/02/2015 a las 1:07 pm

Buenas,

Quisiera saber como puedo crear un modulo que trabaje como una tab, tal como se muestra en el siguiente enlace:
https://www.odoo.com/forum/help-1/question/how-to-add-new-tab-to-module-19050.

Ademas me gustaria saber como puedo crear estos dos tipos de ventanas en odoo, tanto las emergentes asosiadas a menues y las tipo tab. Agradezco su respuesta ya que soy nuevo en Odoo y dese modificar algunas cosas o mas bien agregarle.

Gracias.

Juan Valverde · 13/02/2015 a las 9:33 am

Estimado interesante, agradeceria puedas enseñarnos a poner el monto de una factura en letras he probado varios tutoriales y no logro darle seria mejor si fuera la version OpenERP7 ya que es la que me adecuao apr amodificar los reportes.

Muy agradecido

    Juan Valverde · 15/02/2015 a las 1:43 pm

    Estimado instale el modulo realice las pruebas (es el primer modulo que no en da errores en la instalación) pero las facturas no me salen con el monto en letras imagino muchos buscamos esto agradecería un manual que hayas publicado sobre que archivos modificar luego de la instalación del modulo.

    Muy extremadamente agradecido por tu comprension

Luis Garcia · 21/02/2015 a las 12:27 am

Como realizo un modulo taller de reparacion y ventas de computadoras

Recepcion de equipos
ejecucionde trabajo
finalizacion de trabajo
cobro del servcio

espero tus comentarios gracias,,

    Javier Salazar Carlos · 22/02/2015 a las 9:39 pm

    Definitavamente hay que hacer desarrollo

    Carlos Carvajal · 14/12/2015 a las 6:14 am

    Estimados, al igual que Luis me gustaría desarrollar un módulo helpdesk-IT para odoo8, lamentablemente no encontrado información sobre cómo utilizar los datos de odoo, por ejemplo las cuentas de usuarios.

    Alguien tiene información de cómo llamar y utilizar los modelos de odoo

    Saludos,

      jose · 06/10/2016 a las 11:28 am

      mcsistemas.net

      contactanos

Luis Garcia · 23/02/2015 a las 7:28 am

Estimado por favor podrias ayudarme a realizar el modulo o quizas tu hacerlo este modulo necesito con urgencia por favor.

Espero tus comentarios

Carlos · 18/08/2015 a las 3:18 pm

Que tal, como podria agregar nuevos campos personalizados por ejemplo al formulario de captura de un producto utilizando este nuevo metodo para odoo 8 ya que es la version que tengo, trate de hacer lo mismo que tienes en: http://huber.salazarcarlos.com/?p=396 pero no se puede instalar en esta version. Muchas gracias por tu orientacion.

Christian Torres · 18/08/2017 a las 5:05 pm

hola yo tengo 6 meses batallando quiero instalar modulos externos pero no puedo no encuentro la ruta donde debo hacer el git clon miren

root@CEOVER:~# cd /opt/odoo/server
-bash: cd: /opt/odoo/server: No such file or directory
root@CEOVER:~# cd /opt/odoo/
-bash: cd: /opt/odoo/: No such file or directory
root@CEOVER:~# cd /opt/
root@CEOVER:/opt# cd
root@CEOVER:~# /opt/odoo/modulos/
-bash: /opt/odoo/modulos/: No such file or directory
root@CEOVER:~# cd opt
-bash: cd: opt: No such file or directory
root@CEOVER:~# cd /opt/
root@CEOVER:/opt# cd /odoo/
-bash: cd: /odoo/: No such file or directory
root@CEOVER:/opt# cd
root@CEOVER:~# ll
total 40
drwx—— 6 root root 4096 Aug 18 17:12 ./
drwxr-xr-x 23 root root 4096 Aug 10 20:39 ../
-rw——- 1 root root 781 Aug 18 19:22 .bash_history
-rw-r–r– 1 root root 3106 Oct 22 2015 .bashrc
drwx—— 2 root root 4096 Feb 2 2017 .cache/
drwxr-xr-x 2 root root 4096 Aug 18 17:12 local-addons/
drwxr-xr-x 2 root root 4096 Feb 2 2017 .nano/
-rw-r–r– 1 root root 148 Aug 17 2015 .profile
drwx—— 2 root root 4096 Feb 2 2017 .ssh/
-rw——- 1 root root 621 Aug 18 01:05 .viminfo
root@CEOVER:~# cd /local-addons/
-bash: cd: /local-addons/: No such file or directory
root@CEOVER:~# ll
total 40
drwx—— 6 root root 4096 Aug 18 17:12 ./
drwxr-xr-x 23 root root 4096 Aug 10 20:39 ../
-rw——- 1 root root 781 Aug 18 19:22 .bash_history
-rw-r–r– 1 root root 3106 Oct 22 2015 .bashrc
drwx—— 2 root root 4096 Feb 2 2017 .cache/
drwxr-xr-x 2 root root 4096 Aug 18 17:12 local-addons/
drwxr-xr-x 2 root root 4096 Feb 2 2017 .nano/
-rw-r–r– 1 root root 148 Aug 17 2015 .profile
drwx—— 2 root root 4096 Feb 2 2017 .ssh/
-rw——- 1 root root 621 Aug 18 01:05 .viminfo
root@CEOVER:~#

Responder a Javier Salazar Carlos Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

code