Guía de Programación de Odoo 10.0

1.1 ¿Qué es Odoo?

Odoo ERP es un software libre que puede ser instalado en la nube y se puede unir con una app para que desde tu celular puedas interactuar con el, tiene varios módulos muy interesantes para la administración de las empresas. Se conocía anteriormente como OpenERP, que es un sistema de ERP integrado de código abierto actualmente producido por la empresa belga Odoo S.A. El fabricante declara su producto como una alternativa de código abierto a SAP ERP y Microsoft Dynamics.

Odoo usa una arquitectura cliente servidor donde los clientes se conectan usando un navegador via RPC. Generalmente, la lógica y la extensión de negocio se realizan en el lado del servidor.

Entre sus principales módulos podemos señalar:

  • CRM Customer relationship management
  • Módulo de Ventas
  • Módulo de Contabilidad
  • Módulo de Compras

1.2 GitHub para Odoo

Lo Básico que tenemos que conocer de GitHub y Linux para Odoo

          
          ## Instalamos git ###
          sudo apt install git

          # Instalamos un módulo
          git clone https://github.com/odoochile/Odoo-Chile

          ## Reiniciamos Odoo ##
          service odoo restart

          ## Actualizar tu directorio local ##
          git pull

          # Borramos un directorio con ficheros
          rm -Rf Odoo-Chile
          
        

2.1 Variables en Python

En Phyton las variable puede declararse de cualquier tipo y pueden cambiar su tipo en el programa.

          
          # una cadena
          c = "Hola Marlon"
          # y esto es un entero
          e = 45
          # podemos comprobarlo con la función type
          type(c)
          type(e)
          
        

2.2 Funciones

Phyton permite crear funciones muy fácilmente usando la siguiente sintaxis

          
          def funcion(): 
              return "Hola Mundo" 
              f = funcion() 
              print f
          
        

2.3 Clases

Phyton permite crear clases muy fácilmente usando la siguiente sintaxis

          
      class Complejo:
          def __init__(self, partereal, parteimaginaria):
          self.r = partereal
          self.i = parteimaginaria

       x = Complejo(3.0, -4.5)
       x.r, x.i
       (3.0, -4.5)
          
        

3.1 Crear un módulo

Odoo cuenta con una herramienta que te permite crear módulos completos para empezar a programar.

            
          # 1- Nos colocamos en la carpeta Odoo 10.0\server
          # cd C:\Program Files (x86)\Odoo 10.0\server
          # 2- Ejecutamos el siguiente comando
          # $ odoo-bin scaffold [module name] [where to put it]
          odoo-bin scaffold nombremodulo odoo/addons
          
      

3.2 ORM - Tipos de datos en Odoo

Tipos de datos.

           
         string -- Cadenas
         help - tooltip de ayuda
         readonly - Si el campo es solo lectura.
         required -- Si el campo es requerido
         index -- Cuando el campo puede ser indexado en la base de dato
         default --  Valor por defecto de un campo
         states -- Un diccionario
         groups -- Listas
         copy (bool) -- Cuando un campo es copiado
         oldname (string) -- El nombre anterior
     
    

4.1 Respaldo Base de Datos

Para crear un respaldo de la base de datos utilizaremos el siguiente comando.

     
          http://localhost:8069/web/database/manager
    
 

4.2 Password por defecto

Contraseñas por defecto.

     
          Port: 5432
          Username:openpg
          Password:openpgpwd
   
 

4.3 Instalando Odoo en Ubuntu

Lo puede hacer desde el siguiente sitio: nightly.odoo.com

     
          wget -O - https://nightly.odoo.com/odoo.key | apt-key add -
          echo "deb http://nightly.odoo.com/10.0/nightly/deb/ ./" >> /etc/apt/sources.list
          apt-get update && apt-get install odoo
     
 

4.4 Procesos Odoo en Windows

Si queremos saber si tenemos un error tenemos que ver el archivo odoo.log que cambia en tiempo real

     
          # Instalamos Windows Server 2003 Resource Kit Tools
          https://www.microsoft.com/en-us/download/confirmation.aspx?id=17657


          # Nos colocamos en la carpeta de la app
          C:\Program Files (x86)\Windows Resource Kits\Tools


          # Ejecutamos en el CMD el siguiente comando
          tail.exe -f "C:\Program Files (x86)\Odoo 9.0-20160521\server\odoo.log"
  
 

4.5 Clonando un módulo de GitHub

Si queremos clonar un módulo de odoo desde Github usamos los siguientes comandos

     
          ## Instalamos git ###
          sudo apt install git
          
          ## nos colocamos sobre la carpeta de modulos ###
          cd /usr/lib/python2.7/dist-packages/openerp/addons

          ## Instalamos el primer modulo ##
          git clone -b 9.0 https://github.com/dansanti/l10n_cl_vat
          sudo service odoo restart
    
 

4.6 Carpeta de módulos externos

En Odoo es recomendable instalar los módulo que no son oficiales en otra carpeta para ello seguiremos los siguientes pasos

           
          ## 0- Los módulos estandar de Odoo 10.0 estan en la siguiente dirección ##
          cd /usr/lib/python2.7/dist-packages/odoo/addons
  
          ## 1- Nos conectamos con permiso de administrador ##
          sudo su

          ## 2- Damos permiso de escritura a la carpeta de odoo ###
          chmod 777 -R  /var/lib/odoo/

          ## 3- Entramos en la carpeta que colocaremos los módulos ###
          cd /var/lib/odoo/.local/share/Odoo/addons/10.0

          ## 4- Instalamos git ###
          sudo apt install git

          ## 5- Clonamos el repositorio con el módulo que nos interese ###
          git clone https://github.com/odoochile/Odoo-Chile

          ## 6 - Adicionamos la carpeta al archivo de configuración de Odoo ##
          cd /etc/odoo
          nano odoo.conf
          addons_path = /usr/lib/python2.7/dist-packages/openerp/addons, /var/lib/odoo/.local/share/Odoo/addons/10.0/Odoo-Chile
          Crtl + X
          Enter

          ## 7 - Reiniciamos odoo ##
          service odoo restart
    
 

4.7 Procesos Odoo en Linux (Ubuntu)

Si queremos saber si tenemos un error tenemos que ver el archivo odoo.log que cambia en tiempo real

     
          # Entramos a la carpeta
          cd /var/log/odoo

          # Mostramos el server.log
          nano odoo-server.log

          # Si lo queremos limpiar
          rm odoo-server.log
  
 

4.8 Instalando la libreria wkhtmltopdf para ver PDF

Cuando instalamos la versión 10.0 en linux necesitamos instalar la libreria wkhtmltopdf que nos permitirá leer los PDF

     
          # Ejecutamos los siguientes comandos
          wget http://download.gna.org/wkhtmltopdf/0.12/0.12.1/wkhtmltox-0.12.1_linux-trusty-amd64.deb
          sudo dpkg -i wkhtmltox-0.12.1_linux-trusty-amd64.debz

          # Reiniciamos Odoo
          service odoo restart
  
 

5.1 Plantilla de un módulo

__init__.py

           
         # -*- coding: utf-8 -*-
         # Part of Odoo. See LICENSE file for full copyright and licensing details.
         from . import models
  
 

__manifest__.py

     
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
# Copyright (c) 2016 FALCON SOLUTIONS - Marlon Falcón
{
    'name': "Modulo RUC - 123ERP",
    'version': '1.0',
    'description': """
Paraguay RUC
==============================================
Configuracion del campo RUC
    """,
    'author': 'FALCON SOLUTIONS - Marlon Falcón',
    'website': "www.falconsolutions.cl",
    'category': 'Localization',
    'depends': ['sale'],
    'data': [
         'views/partner.xml',
    ],
}
      
 

models/partner.py

     
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
# Copyright (c) 2016 FALCON SOLUTIONS - Marlon Falcón

from odoo import fields, models

 class Partner(models.Model):
    _inherit = 'res.partner'

    # Add a new column to the res.partner model, by default partners are not
    rut = fields.Char(string="RUT")
      
 

5.2 Modelos - Variables

__init__.py

           
        nombre = fields.char('Nombre', size=80, required=True, help='Aqui pones el nombre')
        fecha_nacimiento = fields.date('Fecha de nacimiento', help='Fecha de Nacimiento')
        cedula = fields.integer('Cedula', size=10, required=True, help='Aqui pones la cedula')
        direccion =  fields.text('Direccion', help='Direccion')
       
 

Links de Interés

7.1 Módulos OCA

Esta documentación es desarrollada gracias a la colaboración de diferentes fuentes en la web, favor cualquier error reportarlo al mi repositorio Trukos-odoo-10. Si te gusto compártelo