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") :
Salut svp comment creer un module qui exporte les clients de odoo dans un fichier client json.merci de me repondre