OpenERP 7 – ajout d’un champ dans un objet et un formulaire standards

Prenons l'exemple de l'objet "ligne de commande "(sale.order.line) dans lequel nous voudrions 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" et créer un nouveau module "mysale_lg" avec l'arborescence et les fichiers suivants :

 __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,
    "active": True
}

mysale_lg.py :
# -*- 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()

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

Après installation de ce module "mysale_lg", voici le résultat :

Une réflexion au sujet de « OpenERP 7 – ajout d’un champ dans un objet et un formulaire standards »

  1. Bonjour, je ne parviens pas à ajouter un champ "nombre de palettes" sous le champ "nombre de colis" dans la vue "bon de livraison". L'erreur se situe dans le fichier xml, à mon avis la valeur de xpath expr="" qui n'est pas bonne. As-tu une idée ?

Laisser un commentaire

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