ODOO 8 – Création d’un module utilisant les nouvelles API et héritant d’un module utilisant les anciennes

La version 8 de ODOO propose l'utilisation de nouvelles api tout en conservant les anciennes.

extrait "http://anybox.fr/blog/odoo-8-est-publie-quelles-nouveautes"

J'avais déjà rédigé un 1er article sur le sujet.

Nous allons ici vérifier que nous pouvons réaliser un nouveau module avec les nouvelles API tout en héritant d'un module utilisant les anciennes API.
Nous allons reprendre l'exemple vu en avril 2014 sur ce blog.

 Environnement technique
- serveur virtualisé Debian 7.7 sur lequel est installé ODOO 8
- navigateur sur PC Linux Mint 17  à partir duquel on accède à ODOO 8

Description
Reprenons donc l'exemple de l'objet "ligne de commande "(sale.order.line) dans
lequel nous voulons ajouter un champ appelé "longueur".
Ce champ sera aussi ajouté dans le formulaire de saisie des devis/commandes.

Pour cela, nous allons procéder par héritage du module standard "sale" (qui utilise toujours les anciennes API)  et créer un nouveau module "mysale_lg_newapi" avec l'arborescence et les fichiers suivants :

Seul le fichier mysale_lg.py est en fait impacté par les nouvelles API :

# -*- coding: utf-8 -*-
from openerp import models, fields

class sale_order_line(models.Model):
    _inherit = 'sale.order.line'
    _name = 'sale.order.line'
    lg = fields.Integer('Length' , required=True)

* Rappel de ce même fichier avec les anciennes API :
# -*- coding: utf-8 -*-
from openerp.osv import fields, osv

class sale_order_line(osv.osv):
    _inherit = 'sale.order.line'
    _name = 'sale.order.line'
    _columns = {'lg': fields.integer('Length'),}

sale_order_line()

Les autres fichiers restent identiques :
__init__.py :
import mysale_lg

__openerp__.py :
{
    "name" : "View Customization Sale",
    "version" : "1.0",
    "category" : "Generic Modules",
    'depends' : ['sale',],
    "update_xml" : ["mysale_lg.xml",],

    'installable': True,
    'auto_install': False,
}

mysale_lg.xml :
<?xml version="1.0" encoding="utf-8"?>
<openerp>
  <data>
      <record model="ir.ui.view" id="view_order_form_my1">
            <field name="name">sale.order.form.my1</field>
            <field name="model">sale.order</field>
            <field name="inherit_id" ref="sale.view_order_form" />
            <field name="arch" type="xml">
              <xpath expr="//sheet/notebook/page/field[@name='order_line']/tree/field[@name='name']" position="after">
                <field name="lg"/>
              </xpath>
            </field>
        </record>
   </data>
</openerp>

i18n/fr.po :
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
#    * mysale_lg
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0n"
"Report-Msgid-Bugs-To: n"
"POT-Creation-Date: 2014-04-23 08:33+0000n"
"PO-Revision-Date: 2014-04-23 08:33+0000n"
"Last-Translator: <>n"
"Language-Team: n"
"MIME-Version: 1.0n"
"Content-Type: text/plain; charset=UTF-8n"
"Content-Transfer-Encoding: n"
"Plural-Forms: n"

#. module: mysale_lg
#: field:sale.order.line,lg:0
msgid "Length"
msgstr "Longueur"

#. module: mysale_lg
#: code:_description:0
#: model:ir.model,name:mysale_lg.model_sale_order_line
#, python-format
msgid "Sales Order Line"
msgstr "Ligne de commandes de vente"

Le "template" de ce dernier fichier a été produit selon cette procédure

Nous installons ce nouveau module qui produit le résultat attendu (ajout du nouveau champ "longueur") :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *