viernes, 22 de febrero de 2013

Creacion Módulo OpenERP TRESCloud



Creación de un


módulo en OpenERP




Indice

1. Composición de un modulo
   1.1 Elementos
   1.2 Estructura
         1.2.1 Estructura General
         1.2.2 Estructura principal del modulo
                 a.__init__.py
                 b.__openerp__.py
2. OpenERP Objects
   2.1 The ORM - Object-relational mapping - Models
   2.2 modulo.py
   2.3 Atributos para Objects
   2.4 Tipos de Campos ORM 
3. Construcción de la interfaz del modulo
   3.1 Común estructura XML
   3.2 Vistas
   3.3 Acciones
   3.4 Menús







1. Composición de un modulo 

1.1 Elementos:

• Los objetos de negocio: declaradas como clases de Python extendida de osv.osv (OpenObject class).
• Datos: XML / CSV archivos con meta-datos (vistas y la declaración de flujos de trabajo).
• wizards: formularios interactivos que se utilizan para ayudar a los usuarios.
• reports: RML (formato XML), MAKO o plantillas de OpenOffice informe, que se fusionó con cualquier tipo de datos empresariales, y generar HTML, ODT o informes en PDF.


1.2 Estructura:

1.2.1 Estructura General
Cada módulo está contenido en su propio directorio servidor /bin/ addons.


addons/
|- idea/
|- demo/
|- i18n/
|- report/
|- security/
|- view/
|- wizard/
|- workflow/
|- __init__.py
|- __openerp__.py
|- idea.py

1.2.2 Estructura principal del modulo

  • __init__.py
  • __openerp__.py
  • modulo.py
Explicaremos la funcionalidad de los puntos de la estructura principal.

a. __init__.py 
Es el descriptor de módulo de Python, porque un módulo de OpenERP es también un módulo regular de Python. 

Sirve para importar todos los archivos y directorios que contienen código python.




b.__openerp__.py
Contiene un único diccionario de Python con la declaración real del módulo: su nombre, las dependencias, la descripción y composición.
Maneja una estructura, que es la siguiente.




2. OpenERP Objects


Todo los ERP son piezas de datos que son accesibles a través de "objetos". Como un ejemplo, hay un objeto res.partner para acceder a los datos referentes a los partners(clientes), un objeto account.invoice para los datos referentes a las facturas, etc ..

Esto quiere decir que existe un objeto para todos los recursos y no por cada recurso. Si hablamos de términos de "orientación a objetos", podríamos decir que hay un objeto por nivel.

Para los desarrolladores:


OpenERP "objects" se llaman clases en la programación orientada a objetos.
A OpenERP "resources" se suele llamar un objeto en programación OO, instancia de una clase.

2.1 The ORM - Object-relational mapping - Models

El ORM, acrónimo de Object-Relational Mapping, es una parte central de OpenERP.


En OpenERP, el modelo de datos se describe y se manipula a través de las clases y objetos de Python. Es el trabajo ORM para cerrar la brecha - la forma más transparente posible para el desarrollador - entre Python y la base de datos relacional subyacente (PostgreSQL), que proporcionará la persistencia que necesitamos para nuestros objetos.

2.2. modulo.py


Este archivo contiene todas las clases Python con sus respectivas funciones, de acuerdo al siguiente:
Algo importante siempre dentro de un archivo .py es importar los osv.
from osv import osv
from osv import fields

También al declarar la clase debe ir como atributos (osv.osv) En el punto 2. Maneja la siguiente estructura.

class idea(osv.osv)
          _name='idea.idea'
          _columns={
               (se declaran las variables)
          }
          _default={
            ( No es necesario, se utiliza para crear variables con un valor por defecto)
          }
idea()




2.3. Atributos para Objects




2.4. Tipos de Campos ORM

Estos algunos de los tipos de campos de ORM



3. Construcción de la interfaz del modulo.

En la interfaz se manejan con una estructura xml, este se encarga de insertar los registros de datos que declaran los componentes de la interfaz del módulo. Cada módulo es un elemento de registro de datos regular: menús, vistas, acciones, roles, derechos de acceso, etc.
Estos Archivos XML son declarados en update_xml dentro del archivo __openerp__.py



3.1 Común estructura XML

Un XML contiene declaraciones de “record” en la siguiente forma:


3.2 Vistas

3.3 Acciones


3.4 Menús